当前位置: 移动技术网 > IT编程>开发语言>Java > spring-JdbcTemplate之旅

spring-JdbcTemplate之旅

2020年07月22日  | 移动技术网IT编程  | 我要评论

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中都能找到
jar

在 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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网