zoukankan      html  css  js  c++  java
  • 【Java】JDBC Part6 Apache-DBUtil & Spring-JdbcTemplate

    Apache-DBUtils

    开源的JDBC工具类,对JDBC的简单封装

    SQL操作交给了QueryRunner的实例

    Maven依赖

    <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils -->
    <dependency>
        <groupId>commons-dbutils</groupId>
        <artifactId>commons-dbutils</artifactId>
        <version>1.7</version>
    </dependency>

    常用API

    插入语句测试【删改同理操作】

        @Test
        public void dbTest() throws SQLException {
            QueryRunner queryRunner = new QueryRunner();
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByOriginalJdbc();
            String sql = "insert into user(user_name,user_password,user_createTime) values(?,?,?);";
            int update = queryRunner.update(connectionByOriginalJdbc, sql, "你弟含王", "121314",CompleteJdbcUtils.parseToSqlDate("1997-09-06"));
            System.out.println(update);
            CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
        }

    查询单个的QueryRunner 

    - BeanHandler<T> 

        @Test
        public void dbTest2() throws SQLException {
            QueryRunner queryRunner = new QueryRunner();
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
            // 实体类处理器对象
            BeanHandler<User> beanHandler = new BeanHandler<User>(User.class);
            String sql = "select * from user where user_id = ?;";
            // 根据BeanHandler反射过去 只能处理单个对象返回
            User query = queryRunner.query(connectionByOriginalJdbc, sql, beanHandler,3);
            System.out.println(query);
            CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
        }

    用Map封装单个记录的 MapHandler,默认泛型<String,Object>

        @Test
        public void dbTest21() throws SQLException {
            QueryRunner queryRunner = new QueryRunner();
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
            // 实体类处理器对象
            MapHandler mapHandler = new MapHandler(); // <String,Object>
            String sql = "select * from user where user_id = ?;";
            // 根据BeanHandler反射过去 只能处理单个对象返回
            Map<String, Object> map = queryRunner.query(connectionByOriginalJdbc, sql, mapHandler, 3);
            System.out.println(map);
            CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
        }

    多个记录的BeanListHandler<T>处理

        @Test
        public void dbTest3() throws SQLException {
            QueryRunner queryRunner = new QueryRunner();
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
            // 实体类处理器对象
            BeanListHandler<User> beanHandler = new BeanListHandler<User>(User.class);
            String sql = "select * from user;";
            // 根据BeanHandler反射过去 返回List集合封装的对象的处理
            List<User> users = queryRunner.query(connectionByOriginalJdbc, sql, beanHandler);
            for (User user:users) {
                System.out.println(user);
            }
            CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
        }

    或者是MapListHandler,泛型是<String,Object>

        @Test
        public void dbTest31() throws SQLException {
            QueryRunner queryRunner = new QueryRunner();
            Connection connectionByOriginalJdbc = CompleteJdbcUtils.getConnectionByHikari();
            // 实体类处理器对象
            MapListHandler mapListHandler = new MapListHandler();
            String sql = "select * from user;";
            List<Map<String, Object>> maps = queryRunner.query(connectionByOriginalJdbc, sql, mapListHandler);
            for (Map map:maps) {
                System.out.println(map);
            }
            CompleteJdbcUtils.releaseResource(connectionByOriginalJdbc,null,null);
        }

    ScalarHandler 用于特殊值的获取,例如聚合函数的操作

    https://www.bilibili.com/video/BV1eJ411c7rf?p=53

    自定义结果集处理器的方法

    https://www.bilibili.com/video/BV1eJ411c7rf?p=54

    JdbcTemplate来源于SpringJDBC

    提供一个JDBC的模板来实现CRUD

    本身不提供连接池和JDBC的功能,专门用于CRUD

    所以你还需要前面所学过 厂商驱动 & 数据源【连接池】

    这里不再赘述

    导入依赖

            <!-- SpringJDBC JdbcTemplate -->
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
    
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>5.2.6.RELEASE</version>
            </dependency>
    
            <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.2</version>
            </dependency>

    常用的方法:

    - update() 增、删、改
    
    - queryForMap() 查询单个结果返回Map容器
    
    - queryForList() 查询多个结果返回List容器
    
    - query() 查询单个结果返回实体类对象
    
    - queryForObject() 查询单个结果返回原型

    UPDATE

        @Test
        public void update(){
            org.springframework.jdbc.core.JdbcTemplate jdbcTemplate = new org.springframework.jdbc.core.JdbcTemplate(CompleteJdbcUtils.getDataSourceFromHikari());
    
            String sql = "UPDATE user SET user_name = ?,user_password = ? WHERE user_id = ?";
    
            int update = jdbcTemplate.update(sql,"阿伟2","333666",1);
    
            System.out.println(update);
        }

    调用存储过程和函数的资料:

    https://www.cnblogs.com/lz2017/p/7500411.html
  • 相关阅读:
    AJAX实例演示加载xml
    入门AJAX总结
    My97 DatePicker一款好用的日历控件
    SQL Server 安装错误 错误代码:0x800F0906的解决方案
    JS实现动态添加和删除DIV
    .Net之路(九).ashx来实现ajax用户名的验证
    善良公社项目总结之如何从前台向后台传输数据
    MySQL数据分析(16)— 数据操作之增删改查
    字典-Python基础前传(9)
    MYSQL之事务
  • 原文地址:https://www.cnblogs.com/mindzone/p/12769945.html
Copyright © 2011-2022 走看看