使用JdbcTemplate完成简单的CRUD
JdbcTemplate 和 Dbutils 一样。仅仅只是一个简单的jdbc工具库。如果只是简单的crud项目,使用它们完全可以代替mybatis之类的持久层框架。并且更为的简单。
SpringBoot中配置JdbcTemplate
Configuration
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
@Configuration
public class JdbcTemplateConfiguration {
@Autowired
private DataSource dataSource;
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(this.dataSource); // 使用DataSource实例化JdbcTemplate
}
}
CRUD
在持久层,注入JdbcTemplate
@Autowired
private JdbcTemplate jdbcTemplate;
插入和修改
String sql ="UPDATE `user` SET `name`=? WHERE `pass`=?";
this.jdbcTemplate.update(sql,new Object[]{"Litch","1234"});
批量的更新和插入
String sql = "INSERT INTO `user`(`name`,`pass`,`age`,`gender`) VALUES(?,?,?,?);";
List<Object[]> list = new ArrayList<Object[]>();
list.add(new Object[]{"one","123",15,"boy"});
list.add(new Object[]{"two","456",16,"none"});
list.add(new Object[]{"three","789",19,"girl"});
this.jdbcTemplate.batchUpdate(sql,list);// list中每一个Obejct[] 表示一条记录
结果集自动封装为对象
String sql = "SELECT * FROM `user` WHERE `name`=?";
//定义,查询结果生成的对象的类类型
RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
User user = this.jdbcTemplate.queryForObject(sql,rowMapper,new Object[]{"one"});
- 如果根据条件查询出来的数据,不止一条!那么就会抛出异常
- 要保证结果集的字段名称要和JavaBean的字段名称一样、
结果集自动封装为集合
String sql = "SELECT * FROM `user` WHERE `name`=?";
//查询结果生成的对象的类类型
RowMapper<User> rowMapper = new BeanPropertyRowMapper<User>(User.class);
List<User> users = this.jdbcTemplate.query(sql,rowMapper,new Object[]{"Litch"});
聚合查询
String sql = "SELECT COUNT(*) FROM `user`"; //查询总记录数
Long count = this.jdbcTemplate.queryForObject(sql,Long.class);