欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring-JdbcTemplate使用介绍

程序员文章站 2022-07-10 19:06:02
spring-JdbcTemplate之旅:两个小时看完jdbc-template(jdbc模版)下面做一个简单的小结,没什么好说的个人感觉正常项目也用不到,但是得对自己负责,不辜负两个小时的努力。那什么是 JdbcTemplate 呢?JdbcTemplate就是Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作,也就是说封装了一些常用的api,包括简单的crud,批量修改,批量插入,批量删除等等,但还是很鸡肋啊!因为sql还会写成一个个字符串。。。如...

spring-JdbcTemplate之旅:
两个小时看完jdbc-template(jdbc模版)下面做一个简单的小结,没什么好说的个人感觉正常项目也用不到,但是得对自己负责,不辜负两个小时的努力。

那什么是 JdbcTemplate 呢?
JdbcTemplate就是Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作,
也就是说封装了一些常用的api,包括简单的crud,批量修改,批量插入,批量删除等等,但还是很鸡肋啊!
因为sql还会写成一个个字符串。。。如果新批量插入,修改,删除话泛型是一个Objct数组的List集合,然后返回一个int数组
来证明操作是否成功。。。嗯,确实很鸡肋,哈哈哈mp他不香吗,当然,我这这只是吐槽,毋庸置疑他一定比mybitis快,但是
不太利于开发,光sql拼接就有得受喽,嘿嘿。

然后说一下JdbcTemplate在哪一个包底下:org.springframework⁩.jdbc.core.JdbcTemplate.class

下面是代码:

引入jar包:
这些jar包在springframework中都能找到
spring-JdbcTemplate使用介绍

在 spring 配置文件配置数据库连接池

<?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:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
                        
<!-- 数据库连接池 -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
 <property name="url" value="jdbc:mysql://数据库地址" />
 <property name="username" value="root" />
<property name="password" value="root" />
 <property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>

!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <!--注入 dataSource-->
 <property name="dataSource" ref="dataSource"></property>
</bean>

!-- 组件扫描 -->
<context:component-scan base-package="com.demo"></context:component-scan>

</beans>

实体类什么的我就不搞啦,直接上数据库操作代码:

@Repository
public class BookDaoImpl implements BookDao { //注入 JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;

//添加的方法
@Override
public void add(Book book) { //1 创建 sql 语句
	String sql = "insert into t_book values(?,?,?)";
	//2 调用方法实现
	Object[] args = {book.getUserId(), book.getUsername(),book.getUstatus()};
					 
    int update = jdbcTemplate.update(sql,args);
    System.out.println(update); 

	}

//修改
@Override
public void updateBook(Book book) {
		String sql = "update t_book set username=?,ustatus=? where user_id=?"; 
		Object[] args = {book.getUsername(), book.getUstatus(),book.getUserId()}; 
		int update = jdbcTemplate.update(sql, args);
		System.out.println(update);
	}

@Override
public void delete(String id) {
		String sql = "delete from t_book where user_id=?"; 
		int update = jdbcTemplate.update(sql, id); 
		System.out.println(update);
	}



//JdbcTemplate 操作数据库(查询返回某个值):queryForObject
//有两个参数
//第一个参数:sql语句
//第二个参数:返回类型Class

//查询表记录数
@Override
public int selectCount() {
  
	String sql = "select count(*) from t_book";
	Integer count = jdbcTemplate.queryForObject(sql, Integer.class); 
	return count;
	}

//JdbcTemplate 操作数据库(查询返回对象):queryForObject
//1、场景:查询图书详情 2、JdbcTemplate 实现查询返回对象
// 有三个参数
// 第一个参数:sql语句
// 第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
// 第三个参数:sql语句值
//查询返回对象
@Override
public Book findBookInfo(String id) {
		String sql = "select * from t_book where user_id=?"; //调用方法
		Book book = jdbcTemplate.queryForObject(sql, newBeanPropertyRowMapper<Book>(Book.class), id); 
		return book;
	}

//JdbcTemplate 操作数据库(查询返回集合):query
 //1、场景:查询图书列表分页...
 //2、调用 JdbcTemplate 方法实现查询返回集合
//有三个参数
//第一个参数:sql语句
//第二个参数:RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
//第三个参数:sql语句值
 
 @Override
public List<Book> findAllBook() {
		String sql = "select * from t_book";
		//调用方法
		List<Book> bookList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); 
		return bookList;
	}

}

JdbcTemplate 操作数据库(批量操作)

 1、批量操作:操作表里面多条记录 
 2、JdbcTemplate 实现批量添加操作

//有两个参数
//第一个参数:sql语句
//第二个参数:List集合,添加多条记录数据
//批量添加
@Override
public void batchAddBook(List<Object[]> batchArgs) { 
		String sql = "insert into t_book values(?,?,?)"; 
		int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
		System.out.println(Arrays.toString(ints));
	}


批量添加测试{
List<Object[]> batchArgs = new ArrayList<>(); Object[] o1 ={"3","java","a"};

Object[] o2 = {"4","python","b"};
Object[] o3 = {"5","MySQL","c"}; 
batchArgs.add(o1);
batchArgs.add(o2); 
batchArgs.add(o3); 
//调用批量添加 
bookService.batchAdd(batchArgs);
}

批量修改和删除用法就是一样的了


批量删除还是写一下吧:

//批量删除
@Override
public void batchDeleteBook(List<Object[]> batchArgs) { 
		String sql = "delete from t_book where user_id=?"; 
		int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); 
		System.out.println(Arrays.toString(ints));
	}


批量删除测试{
		List<Object[]> batchArgs = new ArrayList<>();
		Object[] o1 = {"3"};
		Object[] o2 = {"4"}; batchArgs.add(o1); batchArgs.add(o2); 
		//调用方法实现批量删除 
		bookService.batchDelete(batchArgs);
	}

到这里就演示完了,但是日常项目还是mybitis居多,哈哈哈


有用点赞关注,谢谢!!!


本文地址:https://blog.csdn.net/qq_42094345/article/details/107500972