1、什么是JdbcTemplate
Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作
2、准备工作
(1)引入相关jar包
<!--jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!-- druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.18</version>
</dependency>
(2)在spring配置文件配置数据库连接池
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
destroy-method="close">
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>
(3)配置JdbcTemplate对象,注入DataSource
<!--JdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--注入dataSource-->
<property name="dataSource" ref="dataSource"></property>
</bean>
(4)创建service类,创建dao类,在dao注入jdbcTemplate对象
//配置文件
<context:component-scan base-package="com.atguigu.Spring5"></context:component-scan>
//Dao
public interface BookDao {
}
//DaoImpl
@Repository
public class BookDaoImpl implements BookDao {
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
}
//Service
@Service
public class BookService {
//注入BookDao
@Autowired
private BookDao bookDao;
}
3、操作数据库
1.对应数据库创建实体类
public class User {
private String userId;
private String username;
private String ustatus;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUstatus() {
return ustatus;
}
public void setUstatus(String ustatus) {
this.ustatus = ustatus;
}
}
2.编写service和dao
(1)在dao进行数据库添加操作
(2)调用jdbcTemplate对象里面update方法实现添加操作
- 有两个参数
- 第一个参数: sql语句
- 第二个参数: 可变参数,设置sql语句值
3.1、添加
@Repository
public class BookDaoImpl implements BookDao {
//注入jdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public void add(Book book) {
//创建sql语句
String sql = "insert into t_book values(?,?,?)";
//调用实现方法
int update = jdbcTemplate.update(sql, book.getUserId(), book.getUsername(), book.getUstatus());
System.out.println(update);
}
}
3.2、修改
//修改
@Override
public void updateBook(Book book) {
//创建sql语句
String sql= "update t_book set username=?,ustatus=? where user_id=?";
//调用实现方法
int update = jdbcTemplate.update(sql,book.getUsername(), book.getUstatus(),book.getUserId());
System.out.println(update);
}
3.3、删除
//删除
@Override
public void deleteBook(String id) {
//创建sql语句
String sql = "delete from t_book where user_id=?";
//调用实现方法
int update = jdbcTemplate.update(sql,id);
System.out.println(update);
}
3.4、查询返回某个值
1.查询表里面有多少条记录,返回是某个值
2.使用JdbcTemplate实现查询返回某个值代码
- 有两个参数
- 第一个参数:sql语句
- 第二个参数: 返回类型Class
//查询表记录数
@Override
public int selectCount() {
//sql语句
String sql = "select count(*) from t_book";
Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
return integer;
}
3.5、查询返回对象
1.场景:查询图书详情
2.JdbcTemplate实现查询返回对象
- 有三个参数
- 第一个参数: sql语句
- 第二个参数: RowMapper,是接口,返回不同类型数据,使用这个接口的实现类完成数据的封装
- 第三个参数: sql问号中的语句值
//查询返回对象
@Override
public Book findBookInfo(String id) {
//创建sql语句
String sql = "select * from t_book where user_id=?";
//调用实现方法
Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
return book;
}
3.6、查询返回集合
1.场景: 查询图书列表分页…
2.调用jdbcTemplate方法查询返回集合
- 有三个参数
- 第一个参数: sql语句
- 第二个参数: RowMapper,是接口,返回不同类型数据,使用这个接口的实现类完成数据的封装
- 第三个参数: sql问号中的语句值 (没有语句值可以不写)
//查询返回集合
@Override
public List<Book> findAllBook() {
//编写sql语句
String sql = "select * from t_book";
//调用实现方法
List<Book> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
return query;
}
3.7、批量添加操作
1.批量操作: 操作表里面多条记录
2.JdbcTemplate实现批量添加操作
- 有两个参数
- 第一个参数: sql语句
- 第二个参数: List集合,添加多条记录数据
//批量添加
@Override
public void batchAllBook(List<Object[]> batchArgs) {
String sql = "insert into t_book values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
System.out.println(Arrays.toString(ints));
}
3.8、批量修改操作
//批量修改
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
String sql= "update t_book set username=?,ustatus=? where user_id=?";
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}
3.9、批量删除操作
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
//创建sql语句
String sql = "delete from t_book where user_id=?";
//调用实现方法
int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
System.out.println(Arrays.toString(ints));
}