Spring JDBC
简述
原生的JDBC操作过于繁琐,spring框架提供了一个JDBCTemplate对象来简化JDBC的开发。连接的获取,释放,结果集的封装等操作均交给template干就行。
使用流程
第一步我们得先导入JDBCTamplate的相关jar包,对没错有5个
然后我们可以创建JDBCTamplate对象依赖于数据源DataSource
然后我们就可以使用Tamplate的方法来进行CRUD操作了,我们常用的方法有:
update():执行DML语句。增、删、改语句
queryForMap():查询结果将结果封装为一个map集
queryForList():查询结果将结果封装为一个list集
query():查询结果,将结果封装为一个javabean对象
queryForObject():查询结果,将结果封装为对象
设现在有一个stduent表,我们已经完成了stduent的bean初始化
我们以如下代码来测试teamplate的好用:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package hjj.JDBCTamplate; import hjj.JDBCTamplate.domain.Student; import hjj.datasource.utils.JDBCUtils; import org.junit.Test; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import java.util.Map; import java.util.Set; public class StudentDemo { private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource()); /** * 修改id=1的学生的分数为200 */ @Test public void test1(){ //2.定义sql String sql = "update student set score = 200 where id = ?"; //3.执行sql int count = template.update(sql, 1); System.out.println(count); } /** * 添加一条记录 */ @Test public void test2(){ String sql = "insert into student values(null,?,?)"; int count = template.update(sql,"jjj",999); System.out.println(count); } /** * 删除刚刚添加的记录 */ @Test public void test3(){ String sql = "delete from student where id = 3"; int count = template.update(sql); System.out.println(count); } /** * 查询id为1的记录,将其结果封装为Map集合 */ @Test public void test4(){ String sql = "select * from student where id = ?"; Map map = template.queryForMap(sql,1); System.out.println(map);//键值为字段名,值为该记录的值 } /** * 查询id为1的记录,将其结果封装为Map集合 */ @Test public void test5(){ String sql = "select * from student"; List<Map<String, Object>> list = template.queryForList(sql);//将每一条记录都封装为一个map,然后将每个map封装为一个list for (Map<String, Object> stringObjectMap : list) { System.out.println(stringObjectMap); } } /** * 查询所有记录,然后封装为student的list集合 * 写法一自己实现mapRow接口 */ @Test public void test6(){ String sql = "select * from student"; List<Student> students = template.query(sql, new RowMapper<Student>() { @Override public Student mapRow(ResultSet resultSet, int i) throws SQLException { Student student = new Student(); int id = resultSet.getInt("id"); String name = resultSet.getString("name"); int score = resultSet.getInt("score"); student.setId(id); student.setName(name); student.setScore(score); return student; } }); System.out.println(students); } /** * 查询所有记录,然后封装为student的list集合 * 写法二用别人写好的 */ @Test public void test7(){ String sql = "select * from student"; List<Student> students = template.query(sql, new BeanPropertyRowMapper<Student>(Student.class)); System.out.println(students); } /** * 查询总记录条数 */ @Test public void test8(){ String sql = "select count(id) from student"; Long tot = template.queryForObject(sql, Long.class); System.out.println(tot); } }
一点一点积累,一点一点蜕变!