Spring JdbcTemplate总结笔记

    科技2026-02-05  2

    JDBCTemplate

    概念和准备

    Spring框架对JDBC进行封装,使用JDBCTemplate方便实现对数据库操作

    引入依赖

    <dependency> <groupId>org.springframework</groupId> <artifactId>org.springframework.orm</artifactId> <version>3.1.2.RELEASE</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency>

    在Spring配置文件配置连接池

    <context:property-placeholder location="classpath:database.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>

    配置JdbcTemplate对象,注入dataSource

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

    创建service类与dao类,在dao注入jdbctemplate对象

    配置文件中开启组件扫描

    <context:component-scan base-package="com.yang"/>

    Dao层

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

    Service层

    @Service public class BookService { //注入Dao @Autowired private BookDao bookDao; }

    JdbcTemplate操作数据库(添加)

    创建实体类

    package com.yang.entity; public class User { private String id; private String name; private String pwd; @Override public String toString() { return "User{" + "id='" + id + '\'' + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }

    编写service和dao

    在dao进行数据库添加操作

    两个参数:1. sql语句

    ​ 2.可变长参数

    @Repository public class BookDaoImpl implements BookDao{ //注入JDBCTemplate @Autowired private JdbcTemplate jdbcTemplate; public void add(Book book) { // 1.创建sql语句 String sql = "insert into mybatis.book values(?,?,?)"; // 2.调用方法实现 Object[] args = {book.getId(), book.getName(), book.getPwd()}; int update = jdbcTemplate.update(sql,args); System.out.println(update); } }

    修改与删除操作

    public void updateBook(Book book) { String sql = "update mybatis.book set name=?,pwd=? where id=?"; Object[] args = {book.getName(),book.getPwd(),book.getId()}; int update = jdbcTemplate.update(sql,args); System.out.println(update); } public void deleteBook(Integer id) { String sql = "delete from mybatis.book where id = ?"; Object[] args = {id}; int delete = jdbcTemplate.update(sql,args); System.out.println(delete); }

    查询返回某个值

    查询表里有多少条记录,返回某个值

    使用JDBCTemplate实现查询返回某个值

    两个参数:sql语句,返回类型的Class

    public int findCount() { String sql = "select count(*) from mybatis.book"; int count = jdbcTemplate.queryForObject(sql,Integer.class); return count; }

    查询返回对象

    第一个参数:sql语句

    第二个参数:RowMapper,是接口,返回不同类型的数据,使用这个接口里面的实现类可以完成数据封装

    第三个参数:可变长参数

    查询返回集合

    查询图书列表分页调用JDBCTemplate方法实现查询返回集合

    批量操作

    JdbcTemplate实现批量添加的操作

    有两个参数

    第一个参数:sql语句

    第二个参数:List集合,添加多条记录数据

    public void batchAddBook(List<Object[]> batchArgs) { String sql = "insert into mybatis.book values (?,?,?)"; int[] res = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(res)); }

    实现批量修改操作

    注意:在传值的时候要按照问号的顺序传

    @Override public void batchUpdate(List<Object[]> batchArgs) { String sql = "update mybatis.book set name=?,pwd=? where id=?"; int[] res = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(res)); }

    实现批量删除操作

    @Override public void batchDelete(List<Object[]> batchArgs) { String sql = "delete from mybatis.book where id = ?"; int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs); System.out.println(Arrays.toString(ints)); }
    Processed: 0.034, SQL: 11