zoukankan      html  css  js  c++  java
  • Spring-JDBC

    Spring-JDBC 是指 Spring 框架对 JDBC 的简单封装, 提供了一个 JDBCTemplate 对象简化 JDBC 的开发.

    使用步骤:

    1. 导入 jar 包

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

      JdbcTemplate template = new JdbcTemplate(ds)

    3. 调用 JdbcTemplate 的方法来完成 CURD 的操作.

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

      • queryForMap(): 查询结果将结果集封装为 map 集合.

        • 将列名作为 key, 值作为 value, 这个方法查询的结果长度只能是 1

      • queryForList(): 查询结果将结果集封装为 List 集合.

        • 将每一条记录封装为一个 map 集合, 再将 map 集合装载到 List 集合中.

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

        • 对象的属性值类型必须是引用类型 (查询的值可能是 null ) (使用包装类)

        • query 的参数: RowMapper:

          一般我们使用 BeanPropertyRowMapper 实现类, 可以完成数据到 JavaBean 的自动封装 ( 反序列化的概念 )

          query(querySql, new BeanPropertyRowMapper<UserModule>(UserModule.class));
      • queryForObject(): 查询结果, 将结果封装为一些基本类型对象, (多用于 sql 聚合函数), 也可以用来查询单个的 JavaBean 对象

    demo: 

    import com.company.JDBC.JDBCDruidUtils;
    import org.springframework.jdbc.core.BeanPropertyRowMapper;
    import org.springframework.jdbc.core.JdbcTemplate;
    import java.util.List;
    import java.util.Map;
    
    /**
     * 使用 Spring JDBC 查询一条数据, 封装到不同的对象.
     */
    public class Jdbc_07_使用SpringJDBC查询一条数据 {
        // 获取 JdbcTemplate 对象
        private JdbcTemplate template = new JdbcTemplate(JDBCDruidUtils.getDataSource());
    
        public static void main(String[] args) {
            Jdbc_07_使用SpringJDBC查询一条数据 obj = new Jdbc_07_使用SpringJDBC查询一条数据();
            // 更新一条记录
            obj.updateRecord();
            // 查询结果 Map
            obj.queryDataByMap();
            // 查询结果 List
            obj.queryDataByList();
            // 查询结果 Object  (常用!)
            obj.queryDataByObject();
            // 查询结果 返回基本数据类型, 聚合函数
            obj.queryDataByBasic();
        }
    
        // 更新一条数据
        public void updateRecord(){
            String updateSql = "update user set balance = 123456 where id = ?";
            int count = this.template.update(updateSql, 1);
            System.out.println("受影响的行数是: " + count);
        }
    
        // 查询结果, 将结果集封装为 map 集合
        public void queryDataByMap(){
            // 拼写 sql
            String querySql = "select * from user where id = ?";
            Map<String, Object> map = this.template.queryForMap(querySql, 1);
            System.out.println(map);
        }
    
        // 查询结果, 将结果集封装为 List 集合
        public void queryDataByList(){
            String querySql = "select * from user limit 0, 3";
            List<Map<String, Object>> list = this.template.queryForList(querySql);
            for (Map row:list) {
                System.out.println(row);
                System.out.println(row.get("username"));
            }
        }
    
        // 查询结果, 将结果集封装为 JavaBean 对象 (放在java实例属性值)
        public void queryDataByObject(){
            String querySql = "select * from user limit 0, 3";
            List<UserModule> objList = this.template.query(querySql, new BeanPropertyRowMapper<UserModule>(UserModule.class));
            for (UserModule user:objList) {
                System.out.println(user);
                System.out.println(user.getBalance());
            }
        }
    
        // 查询结果, 返回基本数据类型, 多用于 聚合函数
        public void queryDataByBasic(){
            String querySql = "select sum(balance) from user";
            Integer balanceTotal = this.template.queryForObject(querySql, Integer.class);
            System.out.println(balanceTotal);  // 125456
        }
    }

    ending ~

    每天都要遇到更好的自己.
  • 相关阅读:
    spring boot welcome-file-list
    spring boot web.xml listener
    Linkflow CDP
    连接数据,构建中台,Linkflow如何推动数据化浪潮 CDP
    客户全生命周期服务解决方案的提供商。
    自然语言处理的发展历史 发展方向 行业(法律)
    SpringBoot 设置 profiles 并在其他配置文件里面读取 pom.xml
    SpringBoot 配置文件无法解析占位符
    微服务 SaaS 低代码开发平台
    混沌工程与分布式系统
  • 原文地址:https://www.cnblogs.com/kaichenkai/p/11929672.html
Copyright © 2011-2022 走看看