hooyantsing's Blog

P33 - P39 JdbcTemplate

字数统计: 789阅读时长: 4 min
2022/05/31

视频源:尚硅谷Spring框架视频教程(spring5源码级讲解)

JdbcTemplate(概念和准备)

1. 什么是 JdbcTemplate

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

2. 准备工作

Step 01 引入依赖(jar包)

image-20220531093922683

Step 02 在 spring 配置文件配置数据库连接池

1
2
3
4
5
6
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/userDB"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>

Step 03 配置 JdbcTemplate 对象,注入 DataSource

1
2
3
4
5
<!-- JdbcTemplate对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!-- 注入dataSource -->
<property name="dataSource" ref="JdbcTemplate"></property>
</bean>

Step 04 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象

由于使用到了注解,需要在 spring 配置文件中配置 组件扫描

1
2
3
4
5
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;
}

单条数据操作

P34

1
2
3
4
5
6
@Data
public class User {
private String userId;
private String userName;
private String userStatus;
}

添加

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public void add(Book book) {
// 创建sql语句和args参数
String sql = "insert into t_book values(?,?,?)";
Object[] args = {book.getUserId(),book.getUserName(),book.getUserStatus()};
// 调用方法 返回影响行数
int update = jdbcTemplate.update(sql,args);
}
}

修改和删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public void update(Book book) {
// 创建sql语句和args参数
String sql = "update t_book set user_id = ?,user_name = ?,user_status = ?";
Object[] args = {book.getUserId(),book.getUserName(),book.getUserStatus()};
// 调用方法 返回影响行数
int update = jdbcTemplate.update(sql,args);
}

@Overried
public void delete(String id) {
// 创建sql语句和args参数
String sql = "delete from t_book where user_id = ?";
// 调用方法 返回影响行数
int update = jdbcTemplate.update(sql,id);
}
}

查询数据

返回基本类型

1
2
3
4
5
6
7
8
9
10
11
12
13
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public int selectCount() {
String sql = "select count(*) from t_book";
// Class 返回类型
Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
return count;
}
}

返回对象类型

1
2
3
4
5
6
7
8
9
10
11
12
13
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public Book findBookInfo() {
String sql = "select * from t_book where user_id = ?";
// RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
return book;
}
}

返回集合类型

1
2
3
4
5
6
7
8
9
10
11
12
13
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public List<Book> findAllBook() {
String sql = "select * from t_book";
// RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
List<Book> bookList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<Book>(Book.class));
return bookList;
}
}

批量数据操作

添加

1
2
3
4
5
6
7
8
9
10
11
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public void batchAddBook(List<Object[]> batchArgs) {
String sql = "insert into t_book values(?,?,?)";
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
}
}

修改和删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;

@Overried
public void batchUpdateBook(List<Object[]> batchArgs) {
String sql = "update t_book set user_id = ?,user_name = ?,user_status = ?";
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
}

@Overried
public void batchDeleteBook(List<Object[]> batchArgs) {
String sql = "delete from t_book where user_id = ?";
int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
}
}
CATALOG
  1. 1. JdbcTemplate(概念和准备)
    1. 1.1. 1. 什么是 JdbcTemplate
    2. 1.2. 2. 准备工作
  2. 2. 单条数据操作
    1. 2.1. 添加
    2. 2.2. 修改和删除
  3. 3. 查询数据
    1. 3.1. 返回基本类型
    2. 3.2. 返回对象类型
    3. 3.3. 返回集合类型
  4. 4. 批量数据操作
    1. 4.1. 添加
    2. 4.2. 修改和删除