使用JdbcTemplate完成简单的CRUD

使用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);