详解在spring中使用JdbcTemplate操作数据库的几种方式
作者:永远喜欢由比滨结衣 时间:2024-01-29 09:29:50
使用JdbcTemplate的步骤
1、设置spring-jdbc和spring-tx的坐标(也就是导入依赖)
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.7.RELEASE</version>
</dependency>
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文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- //配置数据源-->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/think"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</bean>
<!-- //配置jdbcTemplate-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource"/>
</bean>
使用配置操作数据库
编写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<Account> list = jt.query("select * from account where name =?",new BeanPropertyRowMapper<Account>(Account.class),"Eden");
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<Account> list = jdbcTemplate.query("select * from account where name=?",
new BeanPropertyRowMapper<Account>(Account.class),name);
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
<!-- 配置账户的持久层-->
<bean id="templateDAO" class="com.jdbcTemplate.test.TemplateDAO">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
编写测试类进行测试
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());
}
}
来源:https://blog.csdn.net/L_GRAND_ORDER/article/details/107449883
标签:spring,JdbcTemplate,数据库
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2024-04-16 09:27:54
浅析Git版本控制器使用
2023-09-10 16:21:23
![](https://img.aspxhome.com/file/2023/7/82937_0s.png)
如何实现文件上传并自动归类功能?
2010-05-24 18:37:00
MySql索引原理与操作
2024-01-28 22:27:31
![](https://img.aspxhome.com/file/2023/6/126246_0s.png)
python编程-将Python程序转化为可执行程序[整理]
2022-10-28 03:48:43
如何把ACCESS转成SQL数据库
2007-08-11 13:51:00
Python对列表排序的方法实例分析
2023-03-02 18:26:57
pyqt 实现QlineEdit 输入密码显示成圆点的方法
2022-04-16 05:15:55
![](https://img.aspxhome.com/file/2023/9/120289_0s.jpg)
如何用Python对数学函数进行求值、求偏导
2023-10-13 04:58:01
Python中Django框架下的staticfiles使用简介
2022-08-18 14:04:40
WEB页面工具语言XML带来的好处
2008-05-29 11:01:00
SqlServer数据库备份与还原的实现步骤
2024-01-28 13:08:40
![](https://img.aspxhome.com/file/2023/9/99949_0s.png)
Python opencv应用实现图片切分操作示例
2021-12-25 03:45:39
![](https://img.aspxhome.com/file/2023/6/72876_0s.png)
浅析pandas随机排列与随机抽样
2022-03-29 21:19:00
网页绿色系配色应用实例
2008-08-26 11:51:00
![](https://img.aspxhome.com/file/UploadPic/20088/26/2008826115322660s.gif)
Python使用 TCP协议实现智能聊天机器人功能
2022-08-19 03:49:48
![](https://img.aspxhome.com/file/2023/4/123694_0s.png)
Python字节单位转换实例
2023-07-18 07:09:16
Python OpenCV中的numpy与图像类型转换操作
2023-11-17 09:24:20
![](https://img.aspxhome.com/file/2023/2/128492_0s.jpg)
如何利用python破解zip加密文件
2022-11-27 17:51:30
![](https://img.aspxhome.com/file/2023/4/105094_0s.webp)
Vue实现自定义字段导出EXCEL的示例代码
2024-04-27 16:12:09
![](https://img.aspxhome.com/file/2023/2/132962_0s.png)