com.jchanghong.db.sql.SqlBuilder Maven / Gradle / Ivy
package com.jchanghong.db.sql;
import com.jchanghong.core.builder.Builder;
import com.jchanghong.core.collection.CollectionUtil;
import com.jchanghong.core.util.ArrayUtil;
import com.jchanghong.core.util.ObjectUtil;
import com.jchanghong.core.util.StrUtil;
import com.jchanghong.db.DbRuntimeException;
import com.jchanghong.db.Entity;
import com.jchanghong.db.dialect.DialectName;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map.Entry;
/**
* 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);
}
// --------------------------------------------------------------- Static methods end
// --------------------------------------------------------------- Enums start
/**
* SQL中多表关联用的关键字
*
* @author Looly
*
*/
public enum Join {
/** 如果表中有至少一个匹配,则返回行 */
INNER,
/** 即使右表中没有匹配,也从左表返回所有的行 */
LEFT,
/** 即使左表中没有匹配,也从右表返回所有的行 */
RIGHT,
/** 只要其中一个表中存在匹配,就返回行 */
FULL
}
// --------------------------------------------------------------- Enums end
final private StringBuilder sql = new StringBuilder();
/** 字段列表(仅用于插入和更新) */
final private List fields = new ArrayList<>();
/** 占位符对应的值列表 */
final private List © 2015 - 2025 Weber Informatics LLC | Privacy Policy