spring-JdbcTemplate使用介绍
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 配置文件配置数据库连接池
<?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
上一篇: java bst的中序遍历
下一篇: Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<chan
推荐阅读
-
抖音账号可以注销吗?抖音注销账号的方法介绍
-
JavaScrpt中如何使用 cookie 设置查看与删除功能
-
Async Validator 异步验证使用说明
-
Fortran中function,subroutine, interface和module的简单使用
-
使用jQuery实现动态添加小广告
-
在Linux命令行下查询当前所使用的shell版本与种类的方法
-
Java中的增强for循环和break continue的使用 以及流程控制训练
-
使用Iterable接口
-
使用sklearn之LabelEncoder将Label标准化的方法
-
php+mysqli使用面向对象方式查询数据库实例_php技巧