zoukankan      html  css  js  c++  java
  • SpringJDBC中jdbcTemplate 的使用

    一:定义

    SpringJDBC是spring官方提供的一个持久层框架,对JDBC进行了封装,提供了一个JDBCTemplated对象简化JDBC的开发。但Spring本身不是一个orm框架,与hibernate比,它需要自己操作sql,手动映射字段关系,在保证灵活性的同时,势必会影响开发效率,如果需要完整的ORM框架,可以选择hibernate和spring Data Jpa.

    二:使用步骤

     1 导包

     2 创建JDBCTemplate 对象  依赖于DataSource

     3 调用JDBCTemplate 方法  CRUD

           3.1 update  增  删 改     DML语句

          3.2 queryForMap() 查询结果封装为map 集合  将列名key  value

         3.3 queryForList()  查询结果封装List 集合

         3.4 query() 查询结果  JavaBean对象

         3.5queryForObject() 将结果封装成对象 

    三:JdbcTemplate 入门示例

      1 package cn.lijun.jdbctemplate;
      2 
      3 import cn.lijun.domain.Emp;
      4 import cn.lijun.utils.JDBCUtils;
      5 import org.junit.Test;
      6 import org.springframework.jdbc.core.BeanPropertyRowMapper;
      7 import org.springframework.jdbc.core.JdbcTemplate;
      8 import org.springframework.jdbc.core.RowMapper;
      9 
     10 import java.sql.Date;
     11 import java.sql.ResultSet;
     12 import java.sql.SQLException;
     13 import java.util.List;
     14 import java.util.Map;
     15 
     16 public class Demo2JDBCTemplate {
     17 
     18     //Junit单元测试,可以让方法独立执行
     19 
     20 
     21     //1. 获取JDBCTemplate对象
     22     private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
     23     /**
     24      * 1. 修改1号数据的 salary 为 10000
     25      */
     26     @Test//我被执行了
     27     public void test1(){
     28 
     29         //2. 定义sql
     30         String sql = "update emp set salary = 10000 where id = 1001";
     31         //3. 执行sql
     32         int count = template.update(sql);
     33         System.out.println(count);
     34     }
     35 
     36     /**
     37      * 2. 添加一条记录
     38      */
     39     @Test
     40     public void test2(){
     41         String sql = "insert into emp(id,ename,dept_id) values(?,?,?)";
     42         int count = template.update(sql, 1015, "郭靖", 10);
     43         System.out.println(count);
     44 
     45     }
     46 
     47     /**
     48      * 3.删除刚才添加的记录
     49      */
     50     @Test
     51     public void test3(){
     52         String sql = "delete from emp where id = ?";
     53         int count = template.update(sql, 1015);
     54         System.out.println(count);
     55     }
     56 
     57     /**
     58      * 4.查询id为1001的记录,将其封装为Map集合
     59      * 注意:这个方法查询的结果集长度只能是1    DQL语句查询
     60      */
     61     @Test
     62     public void test4(){
     63         String sql = "select * from emp where id = ? or id = ?";
     64         Map<String, Object> map = template.queryForMap(sql, 1001,1002);
     65         System.out.println(map);
     66         
     67 
     68     }
     69 
     70     /**
     71      * 5. 查询所有记录,将其封装为List
     72      */
     73     @Test
     74     public void test5(){
     75         String sql = "select * from emp";
     76         List<Map<String, Object>> list = template.queryForList(sql);
     77 
     78         for (Map<String, Object> stringObjectMap : list) {
     79             System.out.println(stringObjectMap);
     80         }
     81     }
     82 
     83     /**
     84      * 6. 查询所有记录,将其封装为Emp对象的List集合//ctrl+p
     85      */
     86 
     87 
     88     @Test
     89     public void test6_2(){
     90         String sql = "select * from emp";
     91         List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
     92         for (Emp emp : list) {
     93             System.out.println(emp);
     94         }
     95     }
     96 
     97     /**
     98      * 7. 查询总记录数
     99      */
    100 
    101     @Test
    102     public void test7(){
    103         String sql = "select count(id) from emp";
    104         Long total = template.queryForObject(sql, Long.class);
    105         System.out.println(total);
    106     }
    107 
    108 }
  • 相关阅读:
    bash /root/.bashrc permission denied
    vscode 在ubuntu的terminal中下划线不显示解决方案
    基于SSH框架的考勤管理系统的设计与实现
    关于《实验一》的框架选择
    认知架构
    《软件需求》读书笔记3
    《软件需求》读书笔记1
    《软件需求》读书笔记2
    《软件方法》读书笔记2
    《软件方法》读书笔记3
  • 原文地址:https://www.cnblogs.com/yanpingping/p/10656515.html
Copyright © 2011-2022 走看看