cn.hutool.db.sql.SqlBuilder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of hutool-all Show documentation
Show all versions of hutool-all Show documentation
Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
package cn.hutool.db.sql;
import cn.hutool.core.builder.Builder;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.db.DbRuntimeException;
import cn.hutool.db.Entity;
import cn.hutool.db.dialect.DialectName;
import cn.hutool.db.dialect.impl.OracleDialect;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/**
* SQL构建器
* 首先拼接SQL语句,值使用 ? 占位
* 调用getParamValues()方法获得占位符对应的值
*
* @author Looly
*/
public class SqlBuilder implements Builder {
private static final long serialVersionUID = 1L;
// --------------------------------------------------------------- Static methods start
/**
* 创建SQL构建器
*
* @return SQL构建器
*/
public static SqlBuilder create() {
return new SqlBuilder();
}
/**
* 创建SQL构建器
*
* @param wrapper 包装器
* @return SQL构建器
*/
public static SqlBuilder create(Wrapper wrapper) {
return new SqlBuilder(wrapper);
}
/**
* 从已有的SQL中构建一个SqlBuilder
*
* @param sql SQL语句
* @return SqlBuilder
* @since 5.5.3
*/
public static SqlBuilder of(CharSequence sql) {
return create().append(sql);
}
/**
* 验证实体类对象的有效性
*
* @param entity 实体类对象
* @throws DbRuntimeException SQL异常包装,获取元数据信息失败
*/
public static void validateEntity(Entity entity) throws DbRuntimeException {
if (null == entity) {
throw new DbRuntimeException("Entity is null !");
}
if (StrUtil.isBlank(entity.getTableName())) {
throw new DbRuntimeException("Entity`s table name is null !");
}
if (entity.isEmpty()) {
throw new DbRuntimeException("No filed and value in this entity !");
}
}
// --------------------------------------------------------------- Static methods end
// --------------------------------------------------------------- Enums start
/**
* SQL中多表关联用的关键字
*
* @author Looly
*/
public enum Join {
/**
* 如果表中有至少一个匹配,则返回行
*/
INNER,
/**
* 即使右表中没有匹配,也从左表返回所有的行
*/
LEFT,
/**
* 即使左表中没有匹配,也从右表返回所有的行
*/
RIGHT,
/**
* 只要其中一个表中存在匹配,就返回行
*/
FULL
}
// --------------------------------------------------------------- Enums end
private final StringBuilder sql = new StringBuilder();
/**
* 占位符对应的值列表
*/
private final List
© 2015 - 2024 Weber Informatics LLC | Privacy Policy