zoukankan      html  css  js  c++  java
  • JDBC Template

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

    JDBC Template的最大用处我觉得就是可以自动释放资源,少了很多工作。还可以自动把查询结果封装成对象。

    1.步骤

    (1)导入jar包

    commons-logging-1.2.jar

    spring-beans-5.0.0.RELEASE.jar

    spring-core-5.0.0.RELEASE.jar

    spring-jdbc-5.0.0.RELEASE.jar

    spring-tx-5.0.0.RELEASE.jar

    (2)创建JdbcTemplate对象。依赖于数据源DataSource
      JdbcTemplate template = new JdbcTemplate(ds);

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

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


    queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合。注意:这个方法查询的结果集长度只能是1


    queryForList():查询结果将结果集封装为list集合。注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中


    query():查询结果,将结果封装为JavaBean对象
     * query的参数:RowMapper
     * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
    * new BeanPropertyRowMapper<类型>(类型.class)


    queryForObject:查询结果,将结果封装为对象。一般用于聚合函数的查询。

    2.部分示例

    public class JDBCTemplateDemo1 {
    
        // 获取JDBC Template对象
        private JdbcTemplate getJdbcTemplate() throws Exception {
            Properties properties = new Properties();
            InputStream is = JDBCTemplateDemo1.class.getClassLoader().getResourceAsStream("druid.properties");
            properties.load(is);
            DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
            return new JdbcTemplate(dataSource);
        }
    
    
        // queryForMap()
        // 查询id为1001的记录,将其封装为Map集合  注意:这个方法查询的结果集长度只能是1
        @Test
        public void test1() throws Exception {
            // 获取JDBC Template对象
            JdbcTemplate template = getJdbcTemplate();
    
            // Sql语句
            String sql = "select * from emp where id = ? or id = ?";
    
            // queryForMap 返回的是Map对象,只能封装一条数据
            Map<String, Object> map = template.queryForMap(sql, 1001,1002);
    
            //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}
            System.out.println(map);
        }
    
    
        // queryForList()
        // 查询所有记录,将其封装为List
        @Test
        public void test2() throws Exception {
            // 获取JDBC Template对象
            JdbcTemplate template = getJdbcTemplate();
    
            String sql = "select * from emp";
            List<Map<String, Object>> list = template.queryForList(sql);
    
            for (Map<String, Object> stringObjectMap : list) {
                System.out.println(stringObjectMap);
            }
        }
    
    
    
        // query()
        // 查询所有记录,将其封装为Emp对象的List集合
        @Test
        public void test3() throws Exception {
    
            // 获取JDBC Template对象
            JdbcTemplate template = getJdbcTemplate();
    
            String sql = "select * from emp";
    
            // important
            List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
    
            for (Emp emp : list) {
                System.out.println(emp);
            }
        }
    
    
        // queryForObject
        // 查询总记录数
        @Test
        public void test4() throws Exception {
    
            // 获取JDBC Template对象
            JdbcTemplate template = getJdbcTemplate();
            
            String sql = "select count(id) from emp";
            Long total = template.queryForObject(sql, Long.class);
            System.out.println(total);
        }
    }
  • 相关阅读:
    7月15日考试 题解(链表+状压DP+思维题)
    暑假集训日记
    C# .NET 使用 NPOI 生成 .xlsx 格式 Excel
    JavaSE 基础 第42节 局部内部类
    JavaSE 基础 第41节 匿名内部类
    JavaSE 基础 第40节 内部类概述
    JavaSE 基础 第39节 接口的应用
    JavaSE 基础 第38节 接口的实现
    JavaSE 基础 第37节 接口概述
    JavaSE 基础 第36节 抽象类概述与使用
  • 原文地址:https://www.cnblogs.com/chichung/p/10319676.html
Copyright © 2011-2022 走看看