查询条件解析类,生成查询语句的查询条件
来源:互联网 发布:vb for循环 编辑:程序博客网 时间:2024/05/21 11:01
public class ConditionParse implements Serializable {/** * */private static final long serialVersionUID = 1L;private StringBuffer condition = new StringBuffer();/** * * */public ConditionParse() {}/** * 根据条件字段、运算符和条件值拼凑查询条件 * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的查询条件值 */public void addCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("LIKE") != -1) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" "); condition.append("'%").append(conditionValue).append("%'"); } else { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" "); condition.append("'").append(conditionValue).append("'"); } }}// ly 2014-09-29public void addConditionStr(String str) { condition.append(" AND ").append(" ( ").append(str).append(" ) ");}// 添加一个方法直接加上语句public void addConditionStrOrg(String str) { condition.append(str);}/** * 根据条件字段、运算符和条件值拼凑查询条件 * @param fieldName 字段名称 * @param oper 关系运算符 * @param direct 表示进行前模糊(front)、后模糊(back)、全模糊(all) * @param conditionValue 输入的查询条件值 */public void addCondition(String fieldName, String oper, String conditionValue, String direct) { if (!StringTools.isEmptyOrNull(conditionValue)) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("LIKE") != -1) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" "); } if (tempOper.indexOf(">") != -1) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(conditionValue); } else { if (direct.equals("all") || direct.equals("front")) { condition.append("'%").append(conditionValue); } else { condition.append("'").append(conditionValue); } if (direct.equals("all") || direct.equals("back")) { condition.append("%'"); } else { condition.append("'"); } } }}/** * 根据条件字段、运算符和条件值拼凑查询条件 * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的查询条件值 */public void addConditionIn(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { condition.append(" and ").append(fieldName).append(" ").append(oper).append(" ").append(" (") .append(conditionValue).append(") "); } }}/** * @author 高刚强 * @version 2010-2-20 * @param fieldName * @param oper * @param conditionValue */public void addInCondition(String fieldName, String oper, int[] conditionValue) { if (null != conditionValue && conditionValue.length > 0) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { StringBuilder sb = new StringBuilder(); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ("); for (int value : conditionValue) { sb.append(value).append(","); } condition.append(StringTools.removeLastString(sb.toString(), ",")); condition.append(")"); } }}/** * 增加字符串条件字段 conditionValue可以有多个值 用逗号分开,并且每个值为非字符串类型 * @version 2010-2-20 * @param fieldName * @param oper * @param conditionValue */public void addInCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { StringBuilder sb = new StringBuilder(); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ("); String[] temp = conditionValue.split(","); for (String value : temp) { sb.append(value).append(","); } condition.append(StringTools.removeLastString(sb.toString(), ",")); condition.append(")"); } }}/** * 增加字符串条件字段 conditionValue可以有多个值 用逗号分开,并且每个值为非字符串类型 * @version 2010-2-20 * @param fieldName * @param oper * @param conditionValue */public void addInCondition(String fieldName, String oper, String conditionValue, Class<?> requiredType) { if (!StringTools.isEmptyOrNull(conditionValue)) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { String[] tempValues = StringTools.split(conditionValue, ","); addInCondition(fieldName, oper, tempValues, requiredType); } }}/** * 增加字符串条件字段 conditionValue为字符串数组 * @param fieldName * @param oper * @param conditionValue */public void addInCondition(String fieldName, String oper, String[] conditionValue, Class<?> requiredType) { if (null != conditionValue && conditionValue.length > 0) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { if (String.class.equals(requiredType)) { this.addInCondition(fieldName, oper, conditionValue); } else if (Integer.class.equals(requiredType)) { int[] temps = new int[conditionValue.length]; for (int i = 0; i < conditionValue.length; i++) { String value = conditionValue[i]; temps[i] = NumberDealTools.stringTranceInt(value); } this.addInCondition(fieldName, oper, temps); } } }}/** * 增加字符串条件字段,传入数组参数使用IN操作符 * @author GangQiangGao * @param fieldName * @param oper * @param conditionValue */public void addInCondition(String fieldName, String oper, String[] conditionValue) { if (null != conditionValue && conditionValue.length > 0) { String tempOper = oper.trim().toUpperCase(); if (tempOper.indexOf("IN") != -1) { StringBuilder sb = new StringBuilder(); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ("); for (String value : conditionValue) { sb.append("'").append(value).append("',"); } condition.append(StringTools.removeLastString(sb.toString(), ",")); condition.append(")"); } }}/** * Description: <br> * 指定增加条件语句 <br> * Implement: <br> * @param conditionValue */public void addCondition(String conditionValue) { condition.append(" ").append(conditionValue);}/** * @param fieldName * @param oper * @param conditionValue */public void addCondition(String fieldName, String oper, int conditionValue) { String tempValue = String.valueOf(conditionValue); if (!StringTools.isEmptyOrNull(tempValue)) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(tempValue) .append(" "); }}/** * @param fieldName * @param oper * @param conditionValue */public void addCondition(String fieldName, String oper, Integer conditionValue) { String tempValue = StringTools.objectToString(conditionValue); if (!StringTools.isEmptyOrNull(tempValue)) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(tempValue) .append(" "); }}/** * @param fieldName * @param oper * @param conditionValue */public void addCondition(String fieldName, String oper, Double conditionValue) { String tempValue = StringTools.objectToString(conditionValue); if (!StringTools.isEmptyOrNull(tempValue)) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(tempValue) .append(" "); }}/** * 增加字符串条件字段 conditionValue可以有多个值 用逗号分开 * @param fieldName * @param oper * @param conditionValue */public void addStringCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { if (!conditionValue.contains(",")) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" '") .append(conditionValue).append("' "); } else { String[] temp = conditionValue.split(","); for (int i = 0; i < temp.length; i++) { String tempValue = temp[i]; if (i == 0) { condition.append(" AND (").append(fieldName).append(" ").append(oper).append(" '") .append(tempValue).append("' "); } else { condition.append(" OR ").append(fieldName).append(" ").append(oper).append(" '") .append(tempValue).append("' "); } } condition.append(")"); } }}public void addIntsCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { if (!conditionValue.contains(",")) { condition.append(" AND ").append(fieldName).append(" ").append(oper) .append(NumberDealTools.stringTranceInt(conditionValue)); } else { String[] temp = conditionValue.split(","); for (int i = 0; i < temp.length; i++) { int tempValue = NumberDealTools.stringTranceInt(temp[i]); if (i == 0) { condition.append(" AND (").append(fieldName).append(" ").append(oper).append(tempValue); } else { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(tempValue); } } condition.append(")"); } }}/** * Description:增加整型条件字段 <br> * [参数列表,说明每个参数用途] * @param fieldName * @param oper * @param conditionValue void */public void addIntCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { int tempValue = Integer.parseInt(conditionValue); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(tempValue); }}/** * Description:增加float条件字段 * @param fieldName * @param oper * @param conditionValue */public void addFloatCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { float tempValue = Float.parseFloat(conditionValue); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(tempValue); }}/** * Description:增加浮点条件字段 * @param fieldName * @param oper * @param conditionValue */public void addDoubleCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { // double tempValue = Double.parseDouble(conditionValue); double tempValue = NumberDealTools.stringTranceDouble(conditionValue); condition.append(" AND ").append(fieldName).append(" ").append(oper).append(tempValue); }}/** * Description:增加浮点条件字段 * @param fieldName * @param oper * @param conditionValue */public void addDoubleCondition(String fieldName, String oper, double conditionValue) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(conditionValue) .append(" ");}/** * 增加日期条件类型,日期条件类型要经过转换 * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的日期值,格式必须是"yyyy-mm-dd hh:MM:ss"类型 */public void addDateCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String dateValue = "to_date('" + conditionValue + "','yyyy-mm-dd hh24:mi:ss')"; condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(dateValue); }}/** * 增加日期条件类型,日期条件类型要经过转换 * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的日期值,格式必须是"yyyy-mm-dd"类型 */public void addDateCondition1(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String dateValue = "to_date('" + conditionValue + "','yyyy-mm-dd')"; condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(dateValue); }}/** * <p> * Description:增加日期条件类型,日期条件类型要经过转换 * <p> * <p> * modifiContent: * <p> * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的日期值 * @param format 输入的日期值的格式 */public void addDateCondition(String fieldName, String oper, String conditionValue, String format) { if (!StringTools.isEmptyOrNull(conditionValue)) { String dateValue = "to_date('" + conditionValue + "','" + format + "')"; condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(dateValue); }}/** * 根据条件字段、运算符和条件值拼凑查询条件 * @param fieldName 字段名称 * @param oper 关系运算符 * @param conditionValue 输入的查询条件值 */public void addNewCondition(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" "); condition.append(conditionValue).append(" "); }}/** * 增加WHERE字符串在前面,有些情况下原查询语句没有条件语句, 则要在条件语句前增加"WHERE"开头。 conditionValue */public void addWhereStr() { // condition.insert(0, " WHERE 1=1 "); // 2010年4月30日修改以为下情况 if (condition.length() > 0) { String temp = condition.toString().toLowerCase(); int skip = temp.indexOf("and"); condition.delete(0, skip + 3); condition.insert(0, " WHERE "); } else { condition.insert(0, " WHERE 1=1 "); }}/** * 多表联合查询 * @param conditionValue */public void addUnionStr(String conditionValue) { condition.insert(0, conditionValue);}public String getCondition() { return condition.toString();}public void setCondition(String condition) { this.condition.setLength(0); this.condition.append(condition);}public void addConditionNullOrNotNull(String fieldName, String oper, String conditionValue) { condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(conditionValue) .append(" ");}/** * <p> * Description:移出所有的条件 * <p> * @modifier * @modifiDate <p> * modifiContent: * <p> */public void deleteAll() { int length = this.condition.length(); if (length > 0) { this.condition.delete(0, length); }}public void addMySqlDate(String fieldName, String oper, String conditionValue) { if (!StringTools.isEmptyOrNull(conditionValue)) { String dateValue = "str_to_date('" + conditionValue + "','%Y-%m-%d')"; condition.append(" AND ").append(fieldName).append(" ").append(oper).append(" ").append(dateValue); }}
}
0 0
- 查询条件解析类,生成查询语句的查询条件
- 生成SQL查询条件的工具类
- 多条件查询语句
- sql查询条件语句
- 条件查询语句
- jpa 条件查询语句
- 存储过程生成动态条件查询语句
- 动态生成多条件查询语句
- 多项查询条件组合下的SQL语句生成
- Jfinal适用于条件查询的动态SQL语句生成工具
- 关于多条件查询的SQL语句
- SQL的多条件查询语句
- POJO作为查询条件的反射语句
- 求条件查询的sql语句
- SQL SERVER 条件语句的查询
- 条件复杂的sql语句查询
- 数据库查询语句,追加条件的写法。
- Criteria类的条件查询
- Android左右图片切换(可自动)
- Ⅰ.2.6.3.5 如何测试 QTreeWidgets 中的 Items
- 编译ffmpeg-ios
- qsdk编译
- rhel6.6_oracle11gR2的静默安装
- 查询条件解析类,生成查询语句的查询条件
- 15省赛A-结构体排序
- 自定义Spring注解bean的命名策略
- linux内核学习笔记1
- linux内核二叉查找树的应用
- C# Dictionary进行值复制,而不是地址复制的方法
- jQuery EasyUI使用教程之创建标签页
- ConcurrentHashMap源码解读
- 软件工程04