Java 之 JDBCTemplate


Spring JDBC

  Spring 框架是对 JDBC 的简单封装,提供了一个 JDBCTemplate 对象简化 JDBC 的开发。

  步骤

    1、导入 jar 包

        

    2、创建 JDBCTemplate 对象,依赖于数据源 DataSource。

       数据池之数据源创建。

JdbcTemplate template = new JdbcTemplate(ds);

    3、调用 JdbcTemplate 的方法来完成 CRUD 操作

  常用方法:

1、update():执行DML语句。增、删、改语句。
2、queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合,(注意:这个方法查询的结果集长度只能是1)
3、queryForList():查询结果将结果集封装为list集合(注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中)
4、query():查询结果,将结果封装成 JavaBean 对象,
  query的参数:RowMapper
         ① 创建一个匿名内部类 RowMapper,重写里面的方法
         ② 一般使用 BeanPropertyRowMapper 实现类,可以完成数据到 JavaBean 的自动封装
           new BeanPropertyRowMapper<类型>(类型.class)

5、queryForObject():查询结果,将结果封装成对象,一般用于聚合函数的查询

  案例:

      在bookstores 数据库中有一个book表,表结构和记录如下:

    

    需求

    (1)修改1号数据的 num 为10;

    (2)添加一条记录;

    (3)删除刚刚添加的记录;

    (4)查询 id 为1的记录,将其封装为 Map 集合;

    (5)查询所有记录,将其封装为 List;

    (6)查询所有记录,将其封装为 Emp对象的 List 集合;

    (7)查询总记录数。

    代码实现:

 1 import cn.ks.beans.Book;  2 import cn.ks.utils.JDBCUtils;  3 import org.junit.Test;  4 import org.springframework.jdbc.core.BeanPropertyRowMapper;  5 import org.springframework.jdbc.core.JdbcTemplate;  6 import org.springframework.jdbc.core.RowMapper;  7 
 8 import java.sql.ResultSet;  9 import java.sql.SQLException;  10 import java.util.List;  11 import java.util.Map;  12 
 13 public class JdbcTemplateDemo {  14 
 15     //1获取JDBCTemplate 对象
 16     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());  17 
 18     /*
 19  * 1、修改1号数据的 num 为10;  20      */
 21  @Test  22     public void test1() {  23 
 24         // 2 定义SQL
 25         String sql = "update book set num=10 where id=1";  26         // 3 执行SQL
 27         int count = template.update(sql);  28 
 29  System.out.println(count);  30 
 31  }  32 
 33     /*
 34  * 2 添加一条记录;  35      */
 36  @Test  37     public void test2() {  38         String sql = "insert into book values(?,?,?,?,?)";  39         int count = template.update(sql, null, "红楼梦", 3, 33.0, 6);  40  System.out.println(count);  41  }  42 
 43     /*
 44  * 3、删除刚刚添加的记录;  45      */
 46  @Test  47     public void test3() {  48         String sql = "delete from book where id=?";  49         int count = template.update(sql, 3);  50  System.out.println(count);  51  }  52 
 53     /*
 54  * 4、查询 id 为1的记录,将其封装为 Map 集合;  55  * 注意,这个方法查询的结果长度只能是1  56      */
 57  @Test  58     public void test4() {  59 // String sql = "select * from book where id=? or id=?";  60 // Map<String, Object> map = template.queryForMap(sql, 1, 2);
 61         String sql = "select * from book where id=?";  62         Map<String, Object> map = template.queryForMap(sql, 1);  63  System.out.println(map);  64         //{id=1, name=西游记, kind=1, price=22.0, num=5}
 65  }  66 
 67     /*
 68  5、查询所有记录,将其封装为 List;  69      */
 70  @Test  71     public void test5() {  72         String sql = "select * from book";  73         List<Map<String, Object>> list = template.queryForList(sql);  74 
 75         for (Map<String,Object> item : list) {  76  System.out.println(item);  77  }  78  }  79 
 80     /*
 81  6、查询所有记录,将其封装为 Emp对象的 List 集合;  82      */
 83  @Test  84     public void test6() {  85         String sql = "select * from book";  86         List<Book> list = template.query(sql, new RowMapper<Book>() { //匿名内部类
 87  @Override  88             public Book mapRow(ResultSet resultSet, int i) throws SQLException {  89                 Book book = new Book();  90                 book.setId(resultSet.getInt("id"));  91                 book.setName(resultSet.getString("name"));  92                 book.setKind(resultSet.getString("kind"));  93                 book.setPrice(resultSet.getDouble("price"));  94                 book.setNum(resultSet.getInt("num"));  95 
 96                 return book;  97  }  98  });  99 
100         for (Book book : list) { 101  System.out.println(book); 102  } 103  } 104 
105     /*
106  6、查询所有记录,将其封装为 Emp对象的 List 集合; 107      */
108  @Test 109     public void test7() { 110         String sql = "select * from book"; 111         List<Book> list = template.query(sql, new BeanPropertyRowMapper<Book>(Book.class)); 112         for (Book book : list) { 113  System.out.println(book); 114  } 115  } 116 
117     /*
118  * 7、查询总记录数。 119      */
120  @Test 121     public void test8() { 122         String sql = "select count(id) from book"; 123         Long aLong = template.queryForObject(sql, Long.class); 124  System.out.println(aLong); 125  } 126 }

 

    

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM