概念和准备
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)); }