zoukankan      html  css  js  c++  java
  • Java 工具库Hutool-db数据库简单操作

    一、工具简介

    官网地址https://www.hutool.cn/

    Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关 API 的学习成本,提高工作效率,使 Java 拥有函数式语言般的优雅,让 Java语 言也可以“甜甜的”。Hutool 对文件、流、加密解密、转码、正则、线程、XML、日期、Http客户端 等 JDK 方法进行封装,组成各种 Util 工具类。

    Hutool 涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;

    Hutool 是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的 bug。

    Hutool 的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”代码的问题,彻底改变写代码的方式。

    二、Hutool-db

    数据库操作不外乎四门功课:增删改查,在Java的世界中,由于JDBC的存在,这项工作变得简单易用,但是也并没有做到使用上的简化。于是出现了JPA(Hibernate)、MyBatis、Jfinal等解决框架,或解决多数据库差异问题,或解决SQL维护问题。而Hutool对JDBC的封装,多数为在小型项目中对数据处理的简化,尤其只涉及单表操作时。OK,废话不多,来个Demo感受下。

    1、添加配置文件

    Maven项目中在src/main/resources目录下添加db.setting文件(非Maven项目添加到ClassPath中即可):

        ## db.setting文件
        url = jdbc:mysql://localhost:3306/test
        user = root
        pass = 123456
        ## 可选配置
        # 是否在日志中显示执行的SQL
        showSql = true
        # 是否格式化显示的SQL
        formatSql = false
        # 是否显示SQL参数
        showParams = true

    2、引入驱动jar

            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>4.2.1</version>
            </dependency>
    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency>

    3、增删查改

        Db.use().insert(
            Entity.create("user")
            .set("name", "unitTestUser")
            .set("age", 66)
        );

    插入数据并返回自增主键:

        Db.use().insertForGeneratedKey(
            Entity.create("user")
            .set("name", "unitTestUser")
            .set("age", 66)
        );

        Db.use().del(
            Entity.create("user").set("name", "unitTestUser")//where条件
        );

        Db.use().update(
            Entity.create().set("age", 88), //修改的数据
            Entity.create("user").set("name", "unitTestUser") //where条件
        );

    注意条件语句除了可以用=精确匹配外,也可以范围条件匹配,例如表示 age < 12 可以这样构造Entity:Entity.create("user").set("age", "< 12"),但是通过Entity方式传入条件暂时不支持同字段多条件的情况。

    • 查询全部字段
        //user为表名
        Db.use().findAll("user");
    • 条件查询
    Db.use().findAll(Entity.create("user").set("name", "unitTestUser"));
    • 模糊查询
    Db.use().findLike("user", "name", "Test", LikeType.Contains);
    • 分页查询
        //Page对象通过传入页码和每页条目数达到分页目的
        PageResult<Entity> result = Db.use().page(Entity.create("user").set("age", "> 30"), new Page(10, 20));
    • 执行SQL语句
        //查询
        List<Entity> = Db.use().query("select * from user where age < ?", 3);
    
        //更新
        Db.use().execute("update user set age = ? where name = ?", 3, "张三");
    • 事务
        Db.use().tx(new TxFunc() {
        @Override
        public void call(Db db) throws SQLException {
        db.insert(Entity.create("user").set("name", "unitTestUser"));
        db.update(Entity.create().set("age", 79), Entity.create("user").set("name", "unitTestUser"));
        }
        });
    作者:王陸

    -------------------------------------------

    个性签名:罔谈彼短,靡持己长。做一个谦逊爱学的人!

    本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。鉴于博主处于考研复习期间,有什么问题请在评论区中提出,博主尽可能当天回复,加微信好友请注明原因

  • 相关阅读:
    MySQL关于check约束无效的解决办法
    关于constraint的用法
    MySQL关于Duplicate entry '1' for key 'PRIMARY'错误
    iOS实现高斯模糊效果(Swift版本)
    iOS获取视频中的指定帧的两种方法
    Java关于e.printStackTrace()介绍
    iOS关于JSONKit解析Unicode字符内容出错,问题出在u0000
    Java转型(向上转型和向下转型)
    添加删除Windows组件里没有IIS(Internet信息服务)项的解决方法
    Windows2003:“无法加载安装程序库wbemupgd.dll
  • 原文地址:https://www.cnblogs.com/wkfvawl/p/14710820.html
Copyright © 2011-2022 走看看