jdbcTemplate
jdbcTemplate是spring对jdbc的封装,目的是使jdbc更加易于使用
在jdbcTemplate中执行sql的语句大致分为:
- execute:可以执行所有sql,一般用于执行DDL语句
- update:用于执行insert、update、delete等DML语句
- queryXxx:用于DQL数据查询语句
DQL
当查询单个值时
@Test
void count() {
String sql = "select count(*) from t_user"
Integer integer = jdbcTemplate.queryForObject(sql,Integer.class);
System.out.println("count...:"+integer);
}
- 使用queryForObject()查询单个值
查询单个字段集合
@Test
void selectList(){
String sql = "select username from t_user";
List<String> strings = jdbcTemplate.queryForList(sql, String.class);
System.out.println(strings);
}
- 使用queryForList()查询单个字段的集合形式
返回map类型
@Test
void selectMap(){
Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap("select * from t_user where id=1");
System.out.println(stringObjectMap);
}
- 使用queryForMap查询一个map类型(字段名是key,值是value)
查询对象
@Test
void selectObj2(){
String sql = "select * from t_user where id = ?";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), 1);
System.out.println(user);
}
- 使用queryForObject查询对象
- 使用BeanPropertyRowMapper进行对象封装
查询对象集合
@Test
void selectObjList(){
String sql = "select * from t_user";
List<User> users = jdbcTemplate.query(sql, new BeanPropertyRowMapper<User>(User.class));
System.out.println(users);
}
- 使用query查询对象集合
- 使用BeanPropertyRowMapper进行对象封装
自定义结果封装
@Test
void selectObj(){
List<User> query = jdbcTemplate.query("select * from t_user", new RowMapper<User>() {
@SneakyThrows
@Override
public User mapRow(ResultSet resultSet, int i) {
return new User()
.setId(resultSet.getLong("id"))
.setUsername(resultSet.getString("username"))
.setAge(resultSet.getInt("age"));
}
});
System.out.println("query...:"+query);
}
- 通过RowMapper接口设置返回值
- BeanPropertyRowMapper是官方提供的实现类
DML
- 一律使用update方法,也可以使用execute
- 返回作用行数
增加
@Test
void insert(){
int insert = jdbcTemplate.update("insert into t_user value(default,?,?)","abc",30);
System.out.println("insert...:"+insert);
}
修改
@Test
void update(){
int update = jdbcTemplate.update("update t_user set username = ? where id = ?","abc",1);
System.out.println("update...:"+update);
}
删除
@Test
void delete(){
int delete = jdbcTemplate.update("delete from t_user where id = ?",1);
System.out.println("delete...:"+delete);
}
DDL
@Test
void ddl(){
jdbcTemplate.execute("create table aaa (id bigint(20) not null,a_name varchar(50) not null )");