zoukankan      html  css  js  c++  java
  • 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 }

        

  • 相关阅读:
    pstree
    gvisor vfs2
    gvisor entersyscall exitsyscall
    gvisor在arm64下syscall.SIGILL信号处理
    SpringBlade 为id添加自增长属性
    SQL Server Update 一个列的数据为随机数
    SpringBlade Saber 关闭验证码
    SpringBlade Saber 用户列表的新增按钮 是怎么个显示原理
    SpringBlade Saber 切换标签页 不刷新
    SpringBlade 00 常见问题汇总
  • 原文地址:https://www.cnblogs.com/niujifei/p/11611981.html
Copyright © 2011-2022 走看看