Spring——JdbcTemplate
目录
- 环境准备
- update
- 单条记录查询
- 多条记录查询
- batchUpdate
JdbcTemplate 是 Spring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作
环境准备
需要导入的依赖
出了Spring基本的IOC和AOP的依赖还需导入
spring-tx-5.2.18.RELEASE.jar
spring-orm-5.2.18.RELEASE.jar
spring-jdbc-5.2.18.RELEASE.jar
数据库驱动和数据源
mysql-connector-java-8.0.25.jar
druid-1.2.6.jar
数据库配置文件
jdbc.username=root
jdbc.password=1234
jdbc.url=jdbc:mysql://localhost:3306/wcy
jdbc.driver=com.mysql.cj.jdbc.Driver
Spring配置文件
注解扫描
数据源配置
JdbcTemplate配置
实体类
public class User {
private Integer id;
private String username;
private String password;
private String email;
// getter and setter
}
实体对应的表
UserDao接口
public interface UserDao {
/**
* 添加一个user
*/
int addUser(User user);
/**
* 删除一个User
*/
int deleteUser(Integer id);
/**
* 更改一个user
*/
int updateUser(User user);
/**
* 查询记录条数
*/
Integer queryCount();
/**
* 查询一个user
*/
User queryUser(Integer id);
/**
* 查询全部user
*/
List queryAllUsers();
/**
* 批量添加
*/
void batchAddUser(List userList);
/**
* 批量修改
*/
void batchUpdateUser(List userList);
/**
* 批量删除
*/
void batchDeleteUser(List idList);
}
UserDao实现类
目前全部做空实现,后面慢慢来实现
首先需要将其放到容器中
再注入我们配置好的jdbcTemplate
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Autowired
JdbcTemplate jdbcTemplate;
//全部空实现...
}
update
JdbcTemplate提供了一个update方法来执行单条的增删改的操作
public int update(String sql, @Nullable Object... args)
sql是需要执行的语句args是语句中所需的参数
接下来实现增加,修改和删除User的方法
@Override
public int addUser(User user) {
String sql = "insert into t_user (id, username, password, email) values (?, ?, ?, ?)";
return jdbcTemplate.update(
sql, user.getId(), user.getUsername(), user.getPassword(), user.getEmail()
);
}
@Override
public int deleteUser(Integer id) {
String sql = "delete from t_user where id=?";
return jdbcTemplate.update(sql, id);
}
@Override
public int updateUser(User user) {
String sql = "update t_user set username=?, password=?, email=? where id=?";
return jdbcTemplate.update(
sql, user.getUsername(), user.getPassword(), user.getEmail(), user.getId()
);
}
操作大致相同
单条记录查询
查询的是具体的某个值,只有一行一列
public T queryForObject(String sql, Class requiredType)
requiredType是这个值的类型
实现查询记录条数的方法
@Override
public Integer queryCount() {
String sql = "select count(*) from t_user";
return jdbcTemplate.queryForObject(sql, Integer.class);
}
查询的是一条记录
public T queryForObject(String sql, RowMapper rowMapper, @Nullable Object... args)
rowMapperRowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装,泛型是记录的类型
实现查询一个User
@Override
public User queryUser(Integer id) {
String sql = "select * from t_user where id=?";
return jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), id);
}
多条记录查询
public List query(String sql, RowMapper rowMapper)
实现查询全部user
@Override
public List queryAllUsers() {
String sql = "select * from t_user";
return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
}
batchUpdate
批量的update操作
public int[] batchUpdate(String sql, List
batchArgs参数List 每一个元素Object[] 代表一条记录的参数
批量的增删改
@Override
public void batchAddUser(List userList) {
String sql = "insert into t_user (id, username, password, email) values (?, ?, ?, ?)";
ArrayList