com.xiaoleilu.hutool.db.sql.SqlBuilder Maven / Gradle / Ivy
package com.xiaoleilu.hutool.db.sql;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
import com.xiaoleilu.hutool.collection.CollectionUtil;
import com.xiaoleilu.hutool.db.DbRuntimeException;
import com.xiaoleilu.hutool.db.DbUtil;
import com.xiaoleilu.hutool.db.Entity;
import com.xiaoleilu.hutool.db.dialect.DialectName;
import com.xiaoleilu.hutool.log.Log;
import com.xiaoleilu.hutool.log.StaticLog;
import com.xiaoleilu.hutool.util.ArrayUtil;
import com.xiaoleilu.hutool.util.ObjectUtil;
import com.xiaoleilu.hutool.util.StrUtil;
/**
* SQL构建器
* 首先拼接SQL语句,值使用 ? 占位
* 调用getParamValues()方法获得占位符对应的值
*
* @author Looly
*
*/
public class SqlBuilder {
private final static Log log = StaticLog.get();
private static boolean showSql;
private static boolean formatSql;
//--------------------------------------------------------------- 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);
}
/**
* 设置全局配置:是否通过debug日志显示SQL
* @param isShowSql 是否显示SQL
* @param isFormatSql 是否格式化显示的SQL
*/
public static void setShowSql(boolean isShowSql, boolean isFormatSql){
showSql = isShowSql;
formatSql = isFormatSql;
}
//--------------------------------------------------------------- Static methods end
//--------------------------------------------------------------- Enums start
/**
* SQL中多表关联用的关键字
* @author Looly
*
*/
public static enum Join{
/** 如果表中有至少一个匹配,则返回行 */
INNER,
/** 即使右表中没有匹配,也从左表返回所有的行 */
LEFT,
/** 即使左表中没有匹配,也从右表返回所有的行 */
RIGHT,
/** 只要其中一个表中存在匹配,就返回行 */
FULL
}
//--------------------------------------------------------------- Enums end
final private StringBuilder sql = new StringBuilder();
/** 字段列表(仅用于插入和更新) */
final private List fields = new ArrayList();
/** 占位符对应的值列表 */
final private List
© 2015 - 2024 Weber Informatics LLC | Privacy Policy