JDBCTemplate_执行DML语句与JDBCTemplate_执行DQL语句

JDBCTemplate_执行DML语句

        

执行DML语句

. 需求:        

修改1号数据的 salary 为10000

 

 

 

 

 

 

添加一条记录

 

 

 

 

 

 

删除刚才添加的记录

 

 

 

 

 

 

查询 id 为 1 记录,将其封装为Map集合

 

 

 

 

 

 

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

 

 

 

 

 

 

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

    /**
     * 查询所有记录, 将其封装为Emp对象的List集合
     */
    @Test
    public void test6(){
      String sql ="select * from emp";
      List<Emp> list =template.query(sql, new RowMapper<Emp>() { //要封装什么对象就加什么泛型


          @Override//每调用一次就会封城一个emp对象返回给你
          public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
              Emp emp = new Emp();
               //获取id数据
                int id = resultSet.getInt("id");
              //获取姓名数据
                String ename = resultSet.getString("ename");
              //获取职位数据
                int job_id = resultSet.getInt("job_id");
              //获取上层领导数据
                int mar = resultSet.getInt("mgr");
              //获取入职日期数据
                Date joindate = resultSet.getDate("joindate");
              //获取工资数据
              double salary = resultSet.getDouble("salary");
              //获取奖金数据
              double bonus  = resultSet.getDouble("bonus");
              //获取工作地址数据
              int dept_id  = resultSet.getInt("dept_id");
              // 创建emp对象,并赋值

              emp.setId(id); //id
              emp.setEname(ename); //姓名
              emp.setJob_id(job_id); //工作职位
              emp.setMgr(mar); //上层领导
              emp.setJoindate(joindate); //入职时间
              emp.setSalary(salary); //工资
              emp.setBonus(bonus);  //奖金
              emp.setDept_id(dept_id); //工作地点

              return emp;
          }
      });






      for (Emp emp: list){
          System.out.println(emp);
      }
    }
}

 

 

 

查询总的记录数

 

 

 

 

 

 完整代码

  1 package cn.xueqiang.datasource.jdbctemplate;
  2 
  3 import cn.xueqiang.domain.Emp;
  4 import cn.xueqiang.utils.JDBCUtils;
  5 import org.junit.Test;
  6 import org.springframework.jdbc.core.JdbcTemplate;
  7 import org.springframework.jdbc.core.RowMapper;
  8 import java.sql.ResultSet;
  9 import java.sql.SQLException;
 10 import java.util.Date;
 11 import java.util.List;
 12 import java.util.Map;
 13 
 14 public class JdbcTemplateDemo {
 15     //Junit单元测试 可以让方法独立执行
 16 
 17     //获取JDBCTemplate对象
 18     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
 19 
 20     /**
 21      * 修改1号数据的 salary 为10000
 22      */
 23     @Test
 24     public void test1(){
 25 
 26         //定义sql
 27         String sql = "update emp set salary =10000 where id = ?";//防止SQL注入
 28         //调用方法
 29         int update = template.update(sql, 1001);
 30         System.out.println(update);
 31     }
 32 
 33     /**
 34      * 添加一条记录
 35      */
 36     @Test
 37     public void test2(){
 38         //定义sql
 39         String sql = "insert into emp(id, ename, job_id, mgr, joindate, salary, bonus, dept_id) value(?,?,?,?,?,?,?,?)";//防止SQL注入
 40         //调用方法
 41         int update = template.update(sql, 1015, "杨戬", 4, 10, "2000-12-17", 4500, 0.0, 20);
 42         System.out.println(update);
 43     }
 44     /**
 45      * 删除刚才添加的记录
 46      */
 47     @Test
 48     public void test3(){
 49         //定义sql
 50         String sql = "delete  from emp where id = ?";
 51         int update = template.update(sql, 1015);
 52         System.out.println(update);
 53     }
 54     /**
 55      * 查询 id 为 1 记录,将其封装为Map集合
 56      * 注意:这个方法查询的结果集长度只能是1
 57      */
 58     @Test
 59     public void test4(){
 60         //定义SQL
 61         String sql ="select * from emp where id = ?";
 62         Map<String, Object> map = template.queryForMap(sql, 1001);
 63         System.out.println(map);
 64         //{id=1, name=孙悟空, gender=男, salary=10000.0, join_date=2013-02-04, dept_id=1}
 65     }
 66     /**
 67      * 查询所有记录, 将其封装为List
 68      */
 69     @Test
 70     public void test5(){
 71         //定义Sql
 72         String sql ="select * from emp";
 73         List<Map<String, Object>> maps = template.queryForList(sql);
 74 
 75 
 76         //遍历
 77         for (Map<String,Object>srt: maps){
 78             System.out.println(srt);
 79         }
 80     }
 81     /**
 82      * 查询所有记录, 将其封装为Emp对象的List集合
 83      */
 84     @Test
 85     public void test6(){
 86       String sql ="select * from emp";
 87       List<Emp> list =template.query(sql, new RowMapper<Emp>() { //要封装什么对象就加什么泛型
 88 
 89 
 90           @Override//每调用一次就会封城一个emp对象返回给你
 91           public Emp mapRow(ResultSet resultSet, int i) throws SQLException {
 92               Emp emp = new Emp();
 93                //获取id数据
 94                 int id = resultSet.getInt("id");
 95               //获取姓名数据
 96                 String ename = resultSet.getString("ename");
 97               //获取职位数据
 98                 int job_id = resultSet.getInt("job_id");
 99               //获取上层领导数据
100                 int mar = resultSet.getInt("mgr");
101               //获取入职日期数据
102                 Date joindate = resultSet.getDate("joindate");
103               //获取工资数据
104               double salary = resultSet.getDouble("salary");
105               //获取奖金数据
106               double bonus  = resultSet.getDouble("bonus");
107               //获取工作地址数据
108               int dept_id  = resultSet.getInt("dept_id");
109               // 创建emp对象,并赋值
110 
111               emp.setId(id); //id
112               emp.setEname(ename); //姓名
113               emp.setJob_id(job_id); //工作职位
114               emp.setMgr(mar); //上层领导
115               emp.setJoindate(joindate); //入职时间
116               emp.setSalary(salary); //工资
117               emp.setBonus(bonus);  //奖金
118               emp.setDept_id(dept_id); //工作地点
119 
120               return emp;
121           }
122       });
123       //遍历list集合
124       for (Emp emp: list){
125           System.out.println(emp);
126       }
127     }
128     /**
129      * 7. 查询总记录数
130      */
131 
132     @Test
133     public void test7(){
134         String sql = "select count(id) from emp";
135         Long total = template.queryForObject(sql, Long.class);
136         System.out.println(total);
137     }
138 }

 

 JDBCTemplate_执行DQL语句

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

           

          

 

 

           

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

                否则会出现错误Incorrect result size: expected 1, actual 2

          

 

 

 

 

 

 

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

          

 

             

 

 

 

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

            

 

             出现org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'null' to required type 'double' for property 'bonus';

            错误是因为定义实体类时定义为基本的数据类型了,值不能=null,只能默认为0,所以可以改为引用类型的封装类,重新生成setter&getter&toString方法

            

 

 

7. 查询总记录数

            

 

 

import cn.domain.Emp;
import cn.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.Date;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo2 {

    //Junit单元测试,可以让方法独立执行

    //1.获取JDBCTemplate对象
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    /**
     * 1. 修改1号数据的 salary 为 11000
     */
    @Test
    public void test1(){
        //2.定义sql
        String sql = "update emp set salary = 11000 where id = ?";
        //3.执行sql
        int count = template.update(sql, 1001);
        System.out.println(count);
    }

    /**
     * 2. 添加一条记录
     */
    @Test
    public void test2(){
       //2.定义sql
       String sql = "insert into emp (id,ename,salary,dept_id)values(?,?,?,?)";
       //3.执行sql
        int count = template.update(sql, 1015, "谢怜", 5000, 20);
        System.out.println(count);

    }

    /**
     * 3.删除添加的记录
     */
    @Test
    public void test3(){
        //2.定义sql
        String sql = "delete from emp where id = ?";
        //3.执行sql
        int count = template.update(sql, 1015);
        System.out.println(count);
    }

    /**
     * 4.查询id为1001的记录,将其封装为Map集合
     * 注意:这个方法查询的结果集长度只能是1
     */
    @Test
    public void test4(){
        String sql = "select * from emp where id = ?";
        Map<String, Object> map = template.queryForMap(sql, 1001);
        System.out.println(map);
    }

    /**
     * 5. 查询所有记录,将其封装为List
     */
    @Test
    public void test5(){
        String sql = "select * from emp";
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> map : list) {
            System.out.println(map);
        }
    }

    /**
     *  6.1 查询所有记录,将其封装为Emp对象的List集合
     */
    @Test
    public void test6_1(){
        String sql = "select * from emp";
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {

            @Override
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
                Emp emp = new Emp();
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgr = rs.getInt("mgr");
                Date joindate = rs.getDate("joindate");
                double salary = rs.getDouble("salary");
                double bonus = rs.getDouble("bonus");
                int dept_id = rs.getInt("dept_id");

                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                emp.setMgr(mgr);
                emp.setJoindate(joindate);
                emp.setSalary(salary);
                emp.setBonus(bonus);
                emp.setDept_id(dept_id);

                return emp;
            }
        });

        for (Emp emp : list) {
            System.out.println(emp);
        }
    }


    /**
     *  6.2 查询所有记录,将其封装为Emp对象的List集合
     */
    @Test
    public void test6_2(){
        String sql = "select * from emp";
        List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));

        for (Emp emp : list) {
            System.out.println(emp);
        }
    }

    /**
     * 7.查询总记录数
     */
    @Test
    public void test7(){
       String sql = "select count(id) from emp";
        Long total = template.queryForObject(sql, long.class);
        System.out.println(total);
    }

}

 

posted @ 2022-10-25 13:59  zj勇敢飞,xx永相随  阅读(42)  评论(0编辑  收藏  举报