Java Spring5学习之JdbcTemplate详解
作者:不善言谈者 发布时间:2023-11-25 20:17:23
标签:Java,Spring5,JdbcTemplate
一、JdbcTemplate
Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
二、实战
2.1 引入依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.24</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-orm -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>5.3.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.3.6</version>
</dependency>
2.2 配置连接池
<!--引入外部属性文件 -->
<context:property-placeholder
location="classpath:jdbc.properties" />
<!-- 数据库连接池 -->
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<property name="url" value="${prop.url}" />
<property name="username" value="${prop.userName}" />
<property name="password" value="${prop.password}" />
<property name="driverClassName" value="${prop.driverClass}" />
</bean>
2.3 配置JdbcTemplate 对象,注入 DataSource
<!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate"
class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入 dataSource -->
<property name="dataSource" ref="dataSource"></property>
</bean>
2.4 扫描注解
<!-- 开启注解扫描 -->
<context:component-scan
base-package="cn.zj.aop.an"></context:component-scan>
2.5 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
@Repository
public class UserDaoImpl implements UserDao {
//注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
@Service
public class UserService {
// 注入 dao
@Autowired
private UserDao userDao;
}
三、操作(CRUD)
实体类
public class User {
private String userId;
private String username;
private String ustatus;
@Override
public String toString() {
return "User [userId=" + userId + ", username=" + username + ", ustatus=" + ustatus + "]";
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUstatus() {
return ustatus;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
}
3.1 添加
service
//添加
public void addUser(User user) {
userDao.add(user);
}
dao
@Override
public void add(User user) {
// 1 创建 sql 语句
String sql = "insert into t_user values(?,?,?)";
// 2 调用方法实现
Object[] args = { user.getUserId(), user.getUsername(), user.getUstatus() };
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
测试
@Test
public void test1() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user = new User();
user.setUserId("1");
user.setUsername("java");
user.setUstatus("a");
userService.addUser(user);
}
结果
3.2 修改
service
//修改
public void updateUser(User user) {
userDao.updateUser(user);
}
dao
@Override
public void updateUser(User user) {
// TODO Auto-generated method stub
String sql = "update t_user set username=?,ustatus=? where userId=?";
// 2 调用方法实现
Object[] args = { user.getUsername(), user.getUstatus() ,user.getUserId()};
int update = jdbcTemplate.update(sql, args);
System.out.println(update);
}
测试
@Test
public void test2() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user = new User();
user.setUserId("1");
user.setUsername("javaScrip");
user.setUstatus("abc");
userService.updateUser(user);
}
3.3 删除
// 删除
public void deleteUser(String id) {
userDao.deleteUser(id);
}
@Override
public void deleteUser(String id) {
String sql="delete from t_user where userId=?";
int update=jdbcTemplate.update(sql, id);
System.out.println(update);
}
@Test
public void test3() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
userService.deleteUser("1");
}
四、查询
4.1 查询总记录数 jdbcTemplate.queryForObject
@Test
public void test4() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
int count = userService.selectUserCount();
System.out.println("数据库中共有记录:"+count);
}
//查询记录数
public int selectUserCount() {
return userDao.selectCount();
}
@Override
public int selectCount() {
String sql = "select count(0) from t_user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
4.2 查询返回对象
@Test
public void test5() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
User user=userService.findUserInfo("1");
System.out.println(user);
}
//查询对象
public User findUserInfo(String id) {
// TODO Auto-generated method stub
return userDao.findUserInfo(id);
}
@Override
public User findUserInfo(String id) {
String sql = "select userId,username,ustatus from t_user where userId=?";
User user = jdbcTemplate.queryForObject(sql, new
BeanPropertyRowMapper<User>(User. class),id);
return user;
}
4.3 查询返回集合
@Test
public void test6() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<User> list=userService.findAllUser();
System.out.println(list);
}
//查询返回集合
public List<User> findAllUser(){
return userDao.findAllUser();
}
@Override
public List<User> findAllUser() {
String sql = "select userId,username,ustatus from t_user";
List<User> list = jdbcTemplate.query(sql, new
BeanPropertyRowMapper<User>(User. class));
return list;
}
五、批量操作 jdbcTemplate.batchUpdate
5.1 添加
@Test
public void test7() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "11", "易语言", "中文"};
Object[] o2 = { "12", "c++", "cc"};
Object[] o3 = { "13", "MySQL", "数据库"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchAdd(list);
}
//批量添加
public void batchAdd(List<Object[]> list){
userDao.batchAdd(list);
}
@Override
public void batchAdd(List<Object[]> list) {
String sql = "insert into t_user values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
5.2 修改
@Test
public void test8() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "易语言易", "中文语言","11"};
Object[] o2 = { "c++c", "ccccc","12"};
Object[] o3 = {"MySQL+ORACle", "数据库数据", "13"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchUpdate(list);
}
//批量修改
public void batchUpdate(List<Object[]> list) {
userDao.batchUpdate(list);
}
@Override
public void batchUpdate(List<Object[]> list) {
String sql = "update t_user set username=?,ustatus=? where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
5.3 删除
@Test
public void test9() {
ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
UserService userService = context.getBean("userService", UserService.class);
List<Object[]> list = new ArrayList<>();
Object[] o1 = { "11"};
Object[] o2 = { "12"};
Object[] o3 = { "13"};
list.add(o1);
list.add(o2);
list.add(o3);
userService.batchDelete(list);
}
//批量删除
public void batchDelete(List<Object[]> list) {
userDao.batchDelete(list);
}
@Override
public void batchDelete(List<Object[]> list) {
String sql = "delete from t_user where userId=?";
int[] ints = jdbcTemplate.batchUpdate(sql, list);
System.out.println(ints);
}
来源:https://blog.csdn.net/bushanyantanzhe/article/details/116403535
0
投稿
猜你喜欢
- 本文主要介绍的是通过使用java的相关类可以实现对文件或文件夹的压缩。zlib是一种数据压缩程序库,它的设计目标是处理单纯的数据(而不管数据
- AnDroidDraw 是一个与 DroidDraw 集成的 Android 应用程序,它允许你从 DroidDraw 应用 程序下载你的
- 其实这个表示有点不太对,应该是 Druid 动态切换数据源的方法,只是应用在了 springboot 框架中,准备代码准备了半天,之前在一次
- 重写 equals()方法 和 hashCode()方法最近看了学习了集合的简单的知识,碰到了讲解 Set 的部分,感觉很好奇,这里对于 S
- 因为涉及到 io 流输入问题,如果不关闭会一直占用资源。所以使用过后要及时关闭,防止资源一直被占用。Scanner在使用前要导入 java.
- 本文实例为大家分享了OpenCV实现人脸识别程序的具体代码,供大家参考,具体内容如下//Haar特征检测,人脸识别算法,是用xml作为训练后
- 1:@Qualifier@Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了。所以@Auto
- 在logback.xml中加上该配置,包名如:com.xxx<logger name="packageName"
- Spring Cloud Gateway使用Spring Cloud Gateway是一个基于Spring Boot 2.x和Spring&
- import java.io.BufferedInputStream;import java.io.BufferedOutputStream
- AlertDialog可以在当前的界面上显示一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertD
- Java与C++实现相同的MD5加密算法1、Java版package com.lyz.utils.common;import java.io
- 要实现摇一摇的功能,类似于微信的摇一摇方法1:通过分析加速计数据来判断是否进行了摇一摇操作(比较复杂)方法2:iOS自带的Shake监控AP
- 详解java.lang.reflect.Modifier.isInterface()方法java.lang.reflect.Modifier
- 1、找准入口,使用ClassPathXmlApplicationContext的构造方法加载配置文件,用于加载classPath下的配置文件
- 问题描述:String preStr = "a.b.c"; // 这里要把该字符串按小圆点进行分割,成"a&q
- 这篇文章主要介绍了SpringBoot下如何实现支付宝接口的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 注解从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什
- 用法在java中经常会遇到需要对数据进行类型转换的场景,String类型的数据转为Int类型属于比较常见的场景,主要有两种转换方法:1. 使
- 熬夜写完,尚有不足,但仍在努力学习与总结中,而您的点赞与关注,是对我最大的鼓励!在一些本地化项目开发当中,存在这样一种需求,即开发完成的项目