Package | Description |
---|---|
cn.hutool.db |
Hutool-db是一个在JDBC基础上封装的数据库操作工具类,通过包装,使用ActiveRecord思想操作数据库。
|
cn.hutool.db.dialect |
数据库方言封装,包括数据库方言以及方言自动识别等
|
cn.hutool.db.dialect.impl |
数据库方言实现,包括MySQL、Oracle、PostgreSQL、Sqlite3、H2、SqlServer2012等
|
cn.hutool.db.sql |
SQL语句和Statement构建封装
|
Modifier and Type | Method and Description |
---|---|
long |
DialectRunner.count(Connection conn,
SqlBuilder sqlBuilder)
获取查询结果总数,生成类似于 SELECT count(1) from (sql) hutool_alias_count_
此方法会重新构建 SqlBuilder ,并去除末尾的order by子句 |
long |
AbstractDb.count(SqlBuilder sql)
结果的条目数
|
PageResult<Entity> |
SqlConnRunner.page(Connection conn,
SqlBuilder sqlBuilder,
Page page)
分页查询
此方法不会关闭Connection |
<T> T |
DialectRunner.page(Connection conn,
SqlBuilder sqlBuilder,
Page page,
RsHandler<T> rsh)
分页查询
此方法不会关闭Connection |
<T> T |
AbstractDb.page(SqlBuilder sql,
Page page,
RsHandler<T> rsh)
分页查询
|
static PreparedStatement |
StatementUtil.prepareStatement(Connection conn,
SqlBuilder sqlBuilder)
|
Modifier and Type | Method and Description |
---|---|
default PreparedStatement |
Dialect.psForCount(Connection conn,
SqlBuilder sqlBuilder)
构建用于查询行数的
PreparedStatement 用户实现需按照数据库方言格式,将 Query 转换为带有占位符的SQL语句及参数列表Query 中包含了表名、查询条件等信息,可借助SqlBuilder完成SQL语句生成。 |
PreparedStatement |
Dialect.psForPage(Connection conn,
SqlBuilder sqlBuilder,
Page page)
|
Modifier and Type | Method and Description |
---|---|
protected SqlBuilder |
SqlServer2012Dialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
OracleDialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
MysqlDialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
H2Dialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
AnsiSqlDialect.wrapPageSql(SqlBuilder find,
Page page)
根据不同数据库在查询SQL语句基础上包装其分页的语句
各自数据库通过重写此方法实现最小改动情况下修改分页语句 |
Modifier and Type | Method and Description |
---|---|
PreparedStatement |
AnsiSqlDialect.psForPage(Connection conn,
SqlBuilder sqlBuilder,
Page page) |
protected SqlBuilder |
SqlServer2012Dialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
OracleDialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
MysqlDialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
H2Dialect.wrapPageSql(SqlBuilder find,
Page page) |
protected SqlBuilder |
AnsiSqlDialect.wrapPageSql(SqlBuilder find,
Page page)
根据不同数据库在查询SQL语句基础上包装其分页的语句
各自数据库通过重写此方法实现最小改动情况下修改分页语句 |
Modifier and Type | Method and Description |
---|---|
SqlBuilder |
SqlBuilder.addParams(Object... params)
手动增加参数,调用此方法前需确认SQL中有对应占位符,主要用于自定义SQL片段中有占位符的情况,例如:
SqlBuilder builder = SqlBuilder.of("select * from user where id=?")
|
SqlBuilder |
SqlBuilder.append(Object sqlFragment)
追加SQL其它部分片段,此方法只是简单的追加SQL字符串,空格需手动加入,例如:
SqlBuilder builder = SqlBuilder.of("select *");
builder.append(" from ").append("user");
如果需要追加带占位符的片段,需调用
addParams(Object...) |
static SqlBuilder |
SqlBuilder.create()
创建SQL构建器
|
static SqlBuilder |
SqlBuilder.create(Wrapper wrapper)
创建SQL构建器
|
SqlBuilder |
SqlBuilder.delete(String tableName)
删除
|
SqlBuilder |
SqlBuilder.format()
格式化SQL语句
|
SqlBuilder |
SqlBuilder.from(String... tableNames)
添加 from语句
|
SqlBuilder |
SqlBuilder.groupBy(String... fields)
分组
|
SqlBuilder |
SqlBuilder.having(Condition... conditions)
添加Having语句,所有逻辑之间关系使用
Condition.setLinkOperator(LogicalOperator) 定义 |
SqlBuilder |
SqlBuilder.having(String having)
添加Having语句
|
<T> SqlBuilder |
SqlBuilder.in(String field,
T... values)
多值选择
|
SqlBuilder |
SqlBuilder.insert(Entity entity)
插入,使用默认的ANSI方言
|
SqlBuilder |
SqlBuilder.insert(Entity entity,
DialectName dialectName)
插入
插入会忽略空的字段名及其对应值,但是对于有字段名对应值为 null 的情况不忽略 |
SqlBuilder |
SqlBuilder.insert(Entity entity,
String dialectName)
插入
插入会忽略空的字段名及其对应值,但是对于有字段名对应值为 null 的情况不忽略 |
SqlBuilder |
SqlBuilder.insertPreFragment(Object sqlFragment)
在SQL的开头补充SQL片段
|
SqlBuilder |
SqlBuilder.join(String tableName,
SqlBuilder.Join join)
多表关联
|
static SqlBuilder |
SqlBuilder.of(CharSequence sql)
从已有的SQL中构建一个SqlBuilder
|
SqlBuilder |
SqlBuilder.on(Condition... conditions)
配合JOIN的 ON语句,多表关联的条件语句,所有逻辑之间关系使用
Condition.setLinkOperator(LogicalOperator) 定义 |
SqlBuilder |
SqlBuilder.on(String on)
配合JOIN的 ON语句,多表关联的条件语句
只支持单一的逻辑运算符(例如多个条件之间) |
SqlBuilder |
SqlBuilder.orderBy(Order... orders)
排序
|
SqlBuilder |
SqlBuilder.query(Query query)
构建查询SQL
|
SqlBuilder |
SqlBuilder.select(boolean isDistinct,
Collection<String> fields)
查询
|
SqlBuilder |
SqlBuilder.select(boolean isDistinct,
String... fields)
查询
|
SqlBuilder |
SqlBuilder.select(Collection<String> fields)
查询(非Distinct)
|
SqlBuilder |
SqlBuilder.select(String... fields)
查询(非Distinct)
|
SqlBuilder |
SqlBuilder.update(Entity entity)
更新
|
SqlBuilder |
SqlBuilder.where(Condition... conditions)
添加Where语句,所有逻辑之间关系使用
Condition.setLinkOperator(LogicalOperator) 定义 |
SqlBuilder |
SqlBuilder.where(String where)
添加Where语句
|
Modifier and Type | Method and Description |
---|---|
static <T> T |
SqlExecutor.query(Connection conn,
SqlBuilder sqlBuilder,
RsHandler<T> rsh)
执行查询语句
此方法不会关闭Connection |
Copyright © 2024. All rights reserved.