react 前端框架如何驱动企业数字化转型与创新发展
795
2023-05-09
详解在spring中使用JdbcTemplate操作数据库的几种方式
使用JdbcTemplate的步骤
1、设置spring-jdbc和spring-tx的坐标(也就是导入依赖)
2、创建数据表和实体类
创建数据表的过程省略
创建实体类Account
package com.jdbcTemplate.bean;
public class Account {
private String name;
private Double money;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getMoney() {
return money;
}
public void setMoney(Double money) {
this.money = money;
}
@Override
public String toString() {
return "Account{" +
"name='" + name + '\'' +
", money=" + money +
'}';
}
}
3、创建数据源、JdbcTemplate对象
4、执行数据库操作
实现3、4步的方法提供以下三种
方法一:代码中直接配置数据源和数据对象
创建JdbcTemplate对象+执行jdbc语句
//创建数据源对象
DriverManagerDataSource ds = new DriverManagerDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/think");
ds.setUsername("root");
ds.setPassword("");
//创建jdbcTemplate对象
JdbcTemplate jt = new JdbcTemplate();
//执行操作(插入操作)
jt.setDataSource(ds);
jt.execute("insert into account(name,money)value('EVA',50000)");
方法二:在resources目录下配置xx.xml文件,对数据源、JdbcTemplate进行注入
配置xml文件
xmlns:xsi="http://w3.org/2001/XMLSchema-instance" xmlns:p="http://springframework.org/schema/p" xsi:schemaLocation="http://springframework.org/schema/beans http://springframework.org/schema/beans/spring-beans.xsd"> 使用配置操作数据库 编写test类测试 //二、使用配置操作数据库 //1、获取容器 ApplicationContext ac = new ClassPathXmlApplicationContext("beans5.xml"); //2、获取对象 JdbcTemplate jt = ac.getBean("jdbcTemplate",JdbcTemplate.class); //、执行操作 // jt.execute("insert into account(name,money)value ('Alice',2000)"); //保存 //jt.update("insert into account(name,money)value (?,?)","Eden",100); //更新 // jt.update("update account set money=?,name=? where name=?",1000,"Kiroto","Eden"); //删除 //jt.update("delete from account where name =? and money =?","Kiroto",1000); //查找 List System.out.println(list.isEmpty()?"没有查找结果":list.get(0)); 方法三:使用接口实现 创建template接口和templateDAO接口实现类 接口 package com.jdbcTemplate.test; import com.jdbcTemplate.bean.Account; public interface Template { Account find(String name); int update(Account account); int delete(Account account); int add(Account account); } 接口实现类 package com.jdbcTemplate.test; import com.jdbcTemplate.bean.Account; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import java.util.List; public class TemplateDAO implements Template { private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public Account find(String name) {//查找 List new BeanPropertyRowMapper return list.isEmpty()?null:list.get(0); } public int update(Account account) {//更新 return jdbcTemplate.update("update account set money=? where name=?", account.getMoney(),account.getName()); } public int delete(Account account) {//删除 return jdbcTemplate.update("delete from account where name =?",account.getName()); } public int add(Account account) {//添加 return jdbcTemplate.update("insert into account(name ,money)value (?,?)",account.getName(),account.getMoney()); } } 在测试之前,因为多了一个接口实现类,除了数据源和jdbcTemplate之外,应当在xml配置文件中多配置一个TemplateDAO 编写测试类进行测试 import com.jdbcTemplate.bean.Account; import com.jdbcTemplate.test.Template; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class mytest { public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("beans6.xml"); Template tp = ac.getBean("templateDAO",Template.class);//注意对比方法二的不同 Account account = tp.find("Lily"); System.out.println(account.toString()); } }
xmlns:xsi="http://w3.org/2001/XMLSchema-instance"
xmlns:p="http://springframework.org/schema/p"
xsi:schemaLocation="http://springframework.org/schema/beans
http://springframework.org/schema/beans/spring-beans.xsd">
使用配置操作数据库
编写test类测试
//二、使用配置操作数据库
//1、获取容器
ApplicationContext ac = new ClassPathXmlApplicationContext("beans5.xml");
//2、获取对象
JdbcTemplate jt = ac.getBean("jdbcTemplate",JdbcTemplate.class);
//、执行操作
// jt.execute("insert into account(name,money)value ('Alice',2000)");
//保存
//jt.update("insert into account(name,money)value (?,?)","Eden",100);
//更新
// jt.update("update account set money=?,name=? where name=?",1000,"Kiroto","Eden");
//删除
//jt.update("delete from account where name =? and money =?","Kiroto",1000);
//查找
List
System.out.println(list.isEmpty()?"没有查找结果":list.get(0));
方法三:使用接口实现
创建template接口和templateDAO接口实现类
接口
package com.jdbcTemplate.test;
import com.jdbcTemplate.bean.Account;
public interface Template {
Account find(String name);
int update(Account account);
int delete(Account account);
int add(Account account);
}
接口实现类
package com.jdbcTemplate.test;
import com.jdbcTemplate.bean.Account;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class TemplateDAO implements Template {
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public Account find(String name) {//查找
List
new BeanPropertyRowMapper
return list.isEmpty()?null:list.get(0);
}
public int update(Account account) {//更新
return jdbcTemplate.update("update account set money=? where name=?",
account.getMoney(),account.getName());
}
public int delete(Account account) {//删除
return jdbcTemplate.update("delete from account where name =?",account.getName());
}
public int add(Account account) {//添加
return jdbcTemplate.update("insert into account(name ,money)value (?,?)",account.getName(),account.getMoney());
}
}
在测试之前,因为多了一个接口实现类,除了数据源和jdbcTemplate之外,应当在xml配置文件中多配置一个TemplateDAO
编写测试类进行测试
import com.jdbcTemplate.bean.Account;
import com.jdbcTemplate.test.Template;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class mytest {
public static void main(String[] args) {
ApplicationContext ac = new ClassPathXmlApplicationContext("beans6.xml");
Template tp = ac.getBean("templateDAO",Template.class);//注意对比方法二的不同
Account account = tp.find("Lily");
System.out.println(account.toString());
}
}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~