package com.yanzuoguang.dao.impl; import com.yanzuoguang.dao.cond.SqlCond; import com.yanzuoguang.dao.cond.SqlCondDefault; import com.yanzuoguang.util.helper.StringHelper; import java.util.ArrayList; import java.util.List; /** * SQL语句的字段 * * @author 颜佐光 */ public class SqlDataField { /** * 前台参数名称,当没有前台参数时,则把当前字段当常量代码片段处理 */ private SqlCond cond = null; /** * 是否根据前台参数自动添加,false时保持永久添加模式, * 1. true为条件模式,即前台不输入参数时,则不增加相关代码片段 * 2. false为敞亮模式,不管前台是否输入,该参数和片段必然会增加到后台执行语句中 */ private boolean auto = true; /** * 代码片段 */ private List<String> codes = new ArrayList<String>(); /** * 条件对象 */ public SqlDataField() { } /** * 构造函数 * * @param paraName 前台输入字段 */ public SqlDataField(String paraName) { this(paraName, StringHelper.EMPTY); } /** * 构造函数 * * @param paraName 前台输入字段 * @param condSql 条件语句 */ public SqlDataField(String paraName, String condSql) { this(new SqlCondDefault(paraName), condSql); } /** * 条件 * * @param cond */ public SqlDataField(SqlCond cond) { this(cond, StringHelper.EMPTY); } /** * 条件 * * @param cond * @param condSql */ public SqlDataField(SqlCond cond, String condSql) { this.cond = cond; this.add(condSql); } /** * 添加条件 * * @param condSql * @return */ public SqlDataField add(String condSql) { return this.add("{WHERE}", condSql); } /** * 添加条件 * * @param codeName 字段名称 * @param codeValue 代码内容 * @return */ public SqlDataField add(String codeName, String codeValue) { if (StringHelper.isEmpty(codeValue)) { return this; } this.codes.add(codeName); this.codes.add(codeValue); return this; } /** * 复制实体 * * @return */ public SqlDataField copy() { SqlDataField to = new SqlDataField(); if (this.cond != null) { to.cond = this.cond.copy(); } to.auto = this.auto; to.codes.addAll(this.codes); return to; } /** * 清除所有的代码片段 * * @return */ public SqlDataField clear() { this.codes.clear(); return this; } public SqlCond getCond() { if (this.cond == null) { this.cond = new SqlCondDefault(StringHelper.EMPTY); } return cond; } public void setCond(SqlCond cond) { this.cond = cond; } public boolean isAuto() { return auto; } public void setAuto(boolean auto) { this.auto = auto; } public List<String> getCodes() { return codes; } public void setCodes(List<String> codes) { this.codes = codes; } }