• 数据库简单操作-Db
    • 由来
    • 使用
      • 1、添加配置文件
      • 2、引入MySQL JDBC驱动jar
      • 3、增删改查

    数据库简单操作-Db

    由来

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

    使用

    我们以MySQL为例

    1、添加配置文件

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

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

    2、引入MySQL JDBC驱动jar

    1. <!--mysql数据库驱动 -->
    2. <dependency>
    3. <groupId>mysql</groupId>
    4. <artifactId>mysql-connector-java</artifactId>
    5. <version>${mysql.version}</version>
    6. </dependency>

    注意此处不定义MySQL版本,请参考官方文档使用匹配的驱动包版本。

    3、增删改查

    1. Db.use().insert(
    2. Entity.create("user")
    3. .set("name", "unitTestUser")
    4. .set("age", 66)
    5. );

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

    1. Db.use().insertForGeneratedKey(
    2. Entity.create("user")
    3. .set("name", "unitTestUser")
    4. .set("age", 66)
    5. );

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

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

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

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