zoukankan      html  css  js  c++  java
  • JDBC(三)—— JDBCTemplate

    一、简介

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

    二、步骤

    1. 导入jar包

    2. 创建JdbcTemplate对象。依赖于数据源DataSource

      JdbcTemplatetemplate = new JdbcTemplate(ds);

    3. 调拥JdbcTemplate的方法来完成CRUD的操作

      update():执行DML语句:增删改

      queryForMap():查询结果将结果集封装为Map集合

        注意:这个方法查询的结果集长度只能是1

      queryForList():查询结果将结果封装为List方法

        注意:将每一条记录封装成一个Map集合,再将Map集合装载到List集合中

      query():查询结果,将结果封装为JavaBean对象

        query的参数:RowMapper

          一般我们使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装。

          new BeanPropertyRowMapper<类型>(类型.class)

      queryForObject():查询结果,将结果封装为对象

          一般用于聚合函数的查询。

     三、代码示例

     1 package cn.itcast.jdbctemplate;
     2 
     3 import org.springframework.jdbc.core.JdbcTemplate;
     4 
     5 import cn.itcast.datasource.utils.JDBCUtils;
     6 
     7 /**
     8  * JdbcTemplate入门
     9  */
    10 public class JdbcTemplateDemo1 {
    11     public static void main(String[] args) {
    12         //1.导入jar包
    13 
    14         //2.创建JDBCTemplate对象
    15         JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    16         //3.调用方法
    17         String sql = "update account set balance = 5000 where id = ?";
    18         int count = template.update(sql,3);
    19         System.out.println(count);
    20     }
    21 }
    View Code

    四、DML语句

    1.修改记录操作

    2. 添加记录操作

    3. 删除记录操作

    五、DQL语句

    1. 查询id=1的记录,将其封装成Map集合

    2. 查询所有记录,将其封装为List

    3. 查询所有记录,将其封装为Emp对象的List集合

    4.查询所有记录数

    示例代码:

      1 package cn.itcast.jdbctemplate;
      2 
      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 import org.springframework.lang.Nullable;
      8 
      9 import java.sql.ResultSet;
     10 import java.sql.SQLException;
     11 import java.util.Date;
     12 import java.util.List;
     13 import java.util.Map;
     14 
     15 import cn.itcast.datasource.utils.JDBCUtils;
     16 import cn.itcast.domain.Emp;
     17 
     18 public class JdbcTemplateDemo2 {
     19 
     20     //1.获取JDBCTemplate对象
     21     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
     22     //JUnit单元测试,可以让方法独立执行
     23 
     24     /**
     25      * 修改id=1的记录,salary为10000
     26      */
     27     @Test
     28     public void test1(){
     29         //1.获取JDBCTemplate对象
     30         JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
     31         //2.定义SQL
     32         String sql = "update emp set salary = 10000 where id = 1";
     33         //3. 执行SQL
     34         int count = template.update(sql);
     35         System.out.println(count);
     36     }
     37 
     38     /**
     39      * 添加一条记录
     40      */
     41     @Test
     42     public void test2(){
     43 
     44         //2.定义SQL
     45         String sql = "insert into emp(id,name,gender,salary,join_date,dept_id) values(?,?,?,?,?,?)";
     46         //3. 执行SQL
     47         int count = template.update(sql,6,"施耐庵","男",30000,"2010-9-12",3);
     48         System.out.println(count);
     49     }
     50 
     51     /**
     52      * 删除一条记录
     53      */
     54     @Test
     55     public void test3(){
     56         String sql = "delete from emp where id = ?";
     57         int count = template.update(sql,6);
     58         System.out.println(count);
     59     }
     60 
     61     /**
     62      * 查询id=1的记录,并将其封装为Map集合
     63      * 注意:这个方法查询的结果集长度只能为1
     64      */
     65     @Test
     66     public void test4(){
     67         String sql = "select * from emp where id = ?";
     68         Map<String, Object> map =  template.queryForMap(sql,1);
     69         System.out.println(map);
     70 
     71     }
     72 
     73     /**
     74      * 查询所有记录,将其封装为List
     75      * 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
     76      */
     77     @Test
     78     public void test5(){
     79         String sql = "select * from emp";
     80         List<Map<String,Object>> list = template.queryForList(sql);
     81         for(Map<String, Object> stringObjectMap : list){
     82             System.out.println(stringObjectMap);
     83         }
     84     }
     85 
     86     /**
     87      * 查询所有记录,将其封装为Emp对象的List集合
     88      */
     89     @Test
     90     public void test6(){
     91         String sql = "select * from emp";
     92         List<Emp> list = template.query(sql, new RowMapper<Emp>() {
     93 
     94             @Nullable
     95             @Override
     96             public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
     97                 Emp emp = new Emp();
     98                 int id = resultSet.getInt("id");
     99                 String name = resultSet.getString("name");
    100                 String gender = resultSet.getString("gender");
    101                 double salary = resultSet.getDouble("salary");
    102                 Date join_date = resultSet.getDate("join_date");
    103                 int dept_id = resultSet.getInt("dept_id");
    104 
    105                 emp.setId(id);
    106                 emp.setName(name);
    107                 emp.setGender(gender);
    108                 emp.setSalary(salary);
    109                 emp.setJoin_date(join_date);
    110                 emp.setDept_id(dept_id);
    111                 return emp;
    112             }
    113         });
    114 
    115         for(Emp emp : list){
    116             System.out.println(emp);
    117         }
    118     }
    119 
    120     /**
    121      * 查询所有记录,将其封装为Emp对象的List集合
    122      */
    123     @Test
    124     public void test6_2(){
    125         String sql = "select * from emp";
    126         List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
    127         for(Emp emp : list){
    128             System.out.println(emp);
    129         }
    130     }
    131 
    132     /**
    133      * 查询总记录数
    134      */
    135     @Test
    136     public void test7(){
    137         String sql = "select count(id) from emp";
    138         Long total = template.queryForObject(sql, Long.class);
    139         System.out.println(total);
    140     }
    141 }
    View Code
  • 相关阅读:
    逆向技术汇总
    绕过安全软件设置注册表
    内存空间中的句柄,指针,对象,类
    COM组件的逆向
    组策略设置隔离文件夹
    VS2015驱动环境配置
    python批量提取eml附件
    反沙箱——SetErrorMode
    CrypMic分析报告
    反调试——jmp到那个地址
  • 原文地址:https://www.cnblogs.com/upyang/p/13497997.html
Copyright © 2011-2022 走看看