Hutool 官网:https://www.hutool.cn
官方参考文档:https://www.hutool.cn/docs
本节内容对应官方文档位置:概述 (hutool.cn)
Hutool 版本:5.7.1
Maven项目中在src/main/resources目录下添加db.setting文件(非Maven项目添加到ClassPath中即可)
此处按照官方文档使用mysql作为例子
#------------------------------------------------------------------------------------------ ## 基本配置信息 # JDBC URL,根据不同的数据库,使用相应的JDBC连接字符串 url = jdbc:mysql://<host>:<port>/<database_name> # 用户名,此处也可以使用 user 代替 username = 用户名 # 密码,此处也可以使用 pass 代替 password = 密码 # JDBC驱动名,可选(Hutool会自动识别) driver = com.mysql.jdbc.Driver ## 可选配置 # 是否在日志中显示执行的SQL showSql = true # 是否格式化显示的SQL formatSql = false # 是否显示SQL参数 showParams = true # 打印SQL的日志等级,默认debug sqlLevel = debug #------------------------------------------------------------------------------------------
方法一:
- 按照自定义配置文件的方式读取多个配置文件即可
方法二:
- 在同一配置文件中使用分组隔离不同的数据源配置
[group_db1] url = jdbc:mysql://<host>:<port>/<database_name> username = 用户名 password = 密码 [group_db2] url = jdbc:mysql://<host2>:<port>/<database_name> username = 用户名 password = 密码
可选配置也可按需设置
sql驱动jar包需要自行引入
Entity where = Entity.create(TABLE_NAME).set(key1, value1).set(key2, value2)
相当于:
WHERE key1 = value1 and key2 = value2
.set()可多次使用
value默认以=
号精准匹配,如需范围性匹配,可使用<、>、like、in
等进行构造,例子:Entity.create(TABLE_NAME).set(key,"< value")
where为构造where条件,参照应用第1点,构造where条件
Db.use(Group)
如果配置多源,则用group定义使用哪个数据库,Group选填,不填则使用默认配置
Db.use().insert(where)
插入数据
Db.use().insertForGeneratedKey(where)
插入数据并返回自增主键
Db.use().del(where)
删除数据,where条件不能为空,防止全表删除,如需相关操作,需调用execute方法
Db.use().update(where1,where2)
更新数据,where1为更新的数据,where2为更新条件
Db.use().findAll(TABLE_NAME)
查询全字段数据
Db.use().findAll(where)
按条件进行查询,含模糊查询
Db.use().findLike(TABLE_NAME, 条件,值, LikeType.Contains)
模糊查询
Db.use().page(where, page)
分页查询
Db.use().query(sql)
查询
Db.use().execute(sql)
增删改
?
占位符,例如:Db.use().execute("insert into user values (?, ?, ?)", value1, value2, value3)
Db.use().execute("insert into user values (value1, value2,value3)")
:name
、?name
、@name
命名占位符Map<String, Object> paramMap = MapUtil.builder(name1,(Object) value1).put(name2, value2).put(name3, value3).build()
Db.use().query("select * from table where key=@name1 and key2= @name2 and key3= @name3", paramMap)
Db.use().query("select * from table where key=value1 and key2=value2 and key3=value3")
Db.use().tx(new TxFunc() {
@Override
public void call(Db db) throws SQLException {
db.insert(where);
db.update(where));
}
});
Db.use().tx(db -> {
db.insert(where);
db.update(where);
});
类似SqlRunner,优于Session对象只有一个Connection,便于事务操作
Session session = Session.create(DSFactory.get(Group))
创建Session,DSFactory.get(Group)选填,不填则使用默认数据源,Group对应db.setting的配置
session.beginTransaction()
表示事务开始,调用后每次执行语句将不被提交
session.commit()
合并提交事务,恢复默认自动提交模式
session.insert(where)
插入数据,where为构造where条件,参照应用第1点,构造where条件
session.update(where1, where2);
更新数据,where1为更新的数据,where2为更新条件
session.del(where)
删除数据
Entity entity = Entity.create(TABLE_NAME).set("字段1", "值").set("字段2", 2);
try {
session.beginTransaction();
// 增,生成SQL为 INSERT INTO `table_name` SET(`字段1`, `字段2`) VALUES(?,?)
session.insert(entity);
session.commit();
} catch (SQLException e) {
session.quietRollback();
}
springboot + mariadb + hutool 实例:数据库管理(Hutool-db - 简单使用增删改查)