|
|
|
package com.zhonglai.luhui.dao.dto;
|
|
|
|
|
|
|
|
import com.zhonglai.luhui.dao.annotation.PublicSQLConfig;
|
|
|
|
import com.zhonglai.luhui.dao.util.Sqlutil;
|
|
|
|
import com.zhonglai.luhui.util.DateUtils;
|
|
|
|
import com.zhonglai.luhui.util.sql.BaseEntity;
|
|
|
|
import com.zhonglai.luhui.util.sql.QueryType;
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
import tk.mybatis.mapper.entity.Example;
|
|
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
import java.lang.reflect.InvocationTargetException;
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
import java.text.MessageFormat;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
...
|
...
|
@@ -31,11 +31,12 @@ public class PublicSQL { |
|
|
|
sb.append("INSERT INTO "+tableName);
|
|
|
|
String values = "";
|
|
|
|
String mfStr = "";
|
|
|
|
|
|
|
|
Field[] fields = list.get(0).getClass().getDeclaredFields( );
|
|
|
|
Method[] methods = list.get(0).getClass().getMethods();
|
|
|
|
for(Field field:fields)
|
|
|
|
{
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -87,11 +88,12 @@ public class PublicSQL { |
|
|
|
String tableName = changTableNameFromObject(object);
|
|
|
|
stringBuffer.append(tableName + "(");
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields( );
|
|
|
|
Method[] methods = object.getClass().getMethods( );
|
|
|
|
|
|
|
|
StringBuffer values = new StringBuffer("(");
|
|
|
|
for(Field field:fields)
|
|
|
|
{//
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -151,11 +153,10 @@ public class PublicSQL { |
|
|
|
sql.append(tableName + "(");
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields( );
|
|
|
|
String values = "(";
|
|
|
|
|
|
|
|
Method[] methods = object.getClass().getMethods();
|
|
|
|
for(Field field:fields)
|
|
|
|
{
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -214,6 +215,7 @@ public class PublicSQL { |
|
|
|
String sql = "update ";
|
|
|
|
sql += tableName;
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields();
|
|
|
|
Method[] methods = object.getClass().getMethods();
|
|
|
|
if(null != fields && fields.length !=0 )
|
|
|
|
{
|
|
|
|
sql += " set ";
|
|
...
|
...
|
@@ -221,8 +223,7 @@ public class PublicSQL { |
|
|
|
for(int i=0;i<fields.length;i++)
|
|
|
|
{
|
|
|
|
Field field = fields[i];
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -416,12 +417,12 @@ public class PublicSQL { |
|
|
|
String like = "";
|
|
|
|
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields();
|
|
|
|
Method[] methods = object.getClass().getMethods();
|
|
|
|
if(null != fields && fields.length !=0 )
|
|
|
|
{
|
|
|
|
for(Field field:fields)
|
|
|
|
{
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -523,14 +524,14 @@ public class PublicSQL { |
|
|
|
String where = " where 1=1 ";
|
|
|
|
String like = "";
|
|
|
|
|
|
|
|
Method[] methods = object.getClass().getMethods();
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields();
|
|
|
|
if(null != fields && fields.length !=0 )
|
|
|
|
{
|
|
|
|
for(int i=0;i<fields.length;i++)
|
|
|
|
{
|
|
|
|
Field field = fields[i];
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -612,12 +613,12 @@ public class PublicSQL { |
|
|
|
String tableName = changTableNameFromObject(object);
|
|
|
|
sql += tableName + "(";
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields( );
|
|
|
|
Method[] methods = object.getClass().getMethods( );
|
|
|
|
String values = "(";
|
|
|
|
String update = "";
|
|
|
|
for(Field field:fields)
|
|
|
|
{//
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -676,6 +677,7 @@ public class PublicSQL { |
|
|
|
Object object = objectlist.get(i);
|
|
|
|
|
|
|
|
Field[] fields = object.getClass().getDeclaredFields( );
|
|
|
|
Method[] methods = object.getClass().getMethods( );
|
|
|
|
if(i==0)
|
|
|
|
{
|
|
|
|
String tableName = changTableNameFromObject(object);
|
|
...
|
...
|
@@ -683,8 +685,7 @@ public class PublicSQL { |
|
|
|
sb.append("(");
|
|
|
|
for(Field field:fields)
|
|
|
|
{
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -706,8 +707,7 @@ public class PublicSQL { |
|
|
|
Field field = fields[j];
|
|
|
|
Method method;
|
|
|
|
try {
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -784,10 +784,10 @@ public class PublicSQL { |
|
|
|
{
|
|
|
|
String select = "";
|
|
|
|
Field[] fields = clas.getDeclaredFields();
|
|
|
|
Method[] methods = clas.getMethods();
|
|
|
|
for(Field field:fields)
|
|
|
|
{
|
|
|
|
PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);
|
|
|
|
if(null != publicSQLConfig && !publicSQLConfig.isSelect())
|
|
|
|
if(!haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
continue;
|
|
|
|
}
|
|
...
|
...
|
@@ -813,23 +813,28 @@ public class PublicSQL { |
|
|
|
stringBuffer.append("`");
|
|
|
|
stringBuffer.append(tableName);
|
|
|
|
stringBuffer.append("`");
|
|
|
|
|
|
|
|
StringBuffer orderbyStringBuffer = new StringBuffer();
|
|
|
|
|
|
|
|
StringBuffer whereStringBuffer = new StringBuffer();
|
|
|
|
if(t instanceof BaseEntity)
|
|
|
|
{
|
|
|
|
|
|
|
|
BaseEntity baseEntity = (BaseEntity) t;
|
|
|
|
Map<String, Object[]> timeMap = baseEntity.getTimeMap();
|
|
|
|
String[] keyValues = baseEntity.getKeyValue();
|
|
|
|
Map<String, QueryType> params = baseEntity.getParams();
|
|
|
|
|
|
|
|
String orderBy = baseEntity.getOrderBy();
|
|
|
|
|
|
|
|
if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(timeMap)) //时间条件
|
|
|
|
{
|
|
|
|
for (String time:timeMap.keySet())
|
|
|
|
{
|
|
|
|
stringBuffer.append("`"+time+"`");
|
|
|
|
stringBuffer.append(">=");
|
|
|
|
stringBuffer.append(timeMap.get(time)[0]);
|
|
|
|
// andcriteria.andGreaterThanOrEqualTo(time, timeMap.get(time)[0]) // 开始时间
|
|
|
|
// .andLessThan(time, timeMap.get(time)[1]); // 结束时间
|
|
|
|
whereStringBuffer.append(" AND ");
|
|
|
|
whereStringBuffer.append(setObject(time,QueryType.GTE,timeMap.get(time)[0]));// 开始时间
|
|
|
|
whereStringBuffer.append(" AND ");
|
|
|
|
whereStringBuffer.append(setObject(time,QueryType.LTE,timeMap.get(time)[1]));// 结束时间
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
...
|
...
|
@@ -846,30 +851,8 @@ public class PublicSQL { |
|
|
|
if(com.zhonglai.luhui.util.StringUtils.isNotNull(value))
|
|
|
|
{
|
|
|
|
QueryType queryType = params.get(key);
|
|
|
|
switch (queryType)
|
|
|
|
{
|
|
|
|
// case EQ:
|
|
|
|
// andcriteria.andEqualTo(key,value); //等于
|
|
|
|
// break;
|
|
|
|
// case NE:
|
|
|
|
// andcriteria.andNotEqualTo(key,value); //不等于
|
|
|
|
// break;
|
|
|
|
// case GT:
|
|
|
|
// andcriteria.andGreaterThan(key,value); //大于
|
|
|
|
// break;
|
|
|
|
// case GTE:
|
|
|
|
// andcriteria.andGreaterThanOrEqualTo(key,value); //大于等于
|
|
|
|
// break;
|
|
|
|
// case LT:
|
|
|
|
// andcriteria.andLessThan(key,value); //小于
|
|
|
|
// break;
|
|
|
|
// case LTE:
|
|
|
|
// andcriteria.andLessThanOrEqualTo(key,value); //小于等于
|
|
|
|
// break;
|
|
|
|
// case LIKE:
|
|
|
|
// andcriteria.andLike(key,value+""); //模糊查询
|
|
|
|
// break;
|
|
|
|
}
|
|
|
|
whereStringBuffer.append(" AND ");
|
|
|
|
whereStringBuffer.append(setObject(key,queryType,value));
|
|
|
|
}
|
|
|
|
} catch (NoSuchMethodException e) {
|
|
|
|
throw new RuntimeException(e);
|
|
...
|
...
|
@@ -885,16 +868,122 @@ public class PublicSQL { |
|
|
|
|
|
|
|
if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(keyValues)) //模糊匹配添加
|
|
|
|
{
|
|
|
|
Example.Criteria orcriteria = example.createCriteria();
|
|
|
|
|
|
|
|
StringBuffer likeString = new StringBuffer();
|
|
|
|
String value = keyValues[0];
|
|
|
|
String[] keys = keyValues[1].split(",");
|
|
|
|
for(String key:keys)
|
|
|
|
{
|
|
|
|
orcriteria.orLike(key, "%" + value + "%");
|
|
|
|
likeString.append(" OR ");
|
|
|
|
likeString.append(setObject(key,QueryType.LIKE,value));
|
|
|
|
|
|
|
|
}
|
|
|
|
example.and(orcriteria);
|
|
|
|
if(likeString.length() >0)
|
|
|
|
{
|
|
|
|
whereStringBuffer.append(" AND (");
|
|
|
|
whereStringBuffer.append(likeString.substring(3));
|
|
|
|
whereStringBuffer.append(")");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(orderBy)) //排序
|
|
|
|
{
|
|
|
|
orderbyStringBuffer.append(" ORDER BY ");
|
|
|
|
orderbyStringBuffer.append(orderBy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
getValuseWhere(t,whereStringBuffer); //不带条件的有值参数
|
|
|
|
|
|
|
|
if(whereStringBuffer.length()>0)
|
|
|
|
{
|
|
|
|
stringBuffer.append(" WHERE ").append(whereStringBuffer.substring(4));
|
|
|
|
}
|
|
|
|
|
|
|
|
if(orderbyStringBuffer.length()>0)
|
|
|
|
{
|
|
|
|
stringBuffer.append(orderbyStringBuffer);
|
|
|
|
}
|
|
|
|
|
|
|
|
return stringBuffer.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
private String setObject(String key,QueryType queryType,Object o)
|
|
|
|
{
|
|
|
|
String dengshi = "=";
|
|
|
|
String yingyong = "'{}'";
|
|
|
|
switch (queryType)
|
|
|
|
{
|
|
|
|
case EQ:
|
|
|
|
dengshi = " = ";
|
|
|
|
break;
|
|
|
|
case NE:
|
|
|
|
dengshi = " != ";
|
|
|
|
break;
|
|
|
|
case GT:
|
|
|
|
dengshi = " > ";
|
|
|
|
break;
|
|
|
|
case GTE:
|
|
|
|
dengshi = " >= ";
|
|
|
|
break;
|
|
|
|
case LT:
|
|
|
|
dengshi = " < ";
|
|
|
|
break;
|
|
|
|
case LTE:
|
|
|
|
dengshi = " <= ";
|
|
|
|
break;
|
|
|
|
case LIKE:
|
|
|
|
dengshi = " like ";
|
|
|
|
yingyong = "'%{}%'";
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(o instanceof Number)
|
|
|
|
{
|
|
|
|
yingyong = "{}";
|
|
|
|
}else if(o instanceof Date)
|
|
|
|
{
|
|
|
|
yingyong = "'"+DateUtils.parseDateToStr(DateUtils.getTime(), (Date) o)+"'";
|
|
|
|
}
|
|
|
|
|
|
|
|
return " `"+Sqlutil.toUnderScoreCase(key)+"`"+dengshi+ com.zhonglai.luhui.util.StringUtils.format(yingyong,o) +" ";
|
|
|
|
}
|
|
|
|
|
|
|
|
private <T> void getValuseWhere(T t,StringBuffer stringBuffer)
|
|
|
|
{
|
|
|
|
|
|
|
|
Class clas = t.getClass();
|
|
|
|
Field[] fields = clas.getDeclaredFields(); //获取所有属性
|
|
|
|
|
|
|
|
Method[] methods = clas.getMethods(); //获取所有方法
|
|
|
|
|
|
|
|
for (Field field:fields)
|
|
|
|
{
|
|
|
|
field.setAccessible(true);
|
|
|
|
try {
|
|
|
|
Object value = field.get(t);
|
|
|
|
if(null != value && haveGetMethod(methods,field))
|
|
|
|
{
|
|
|
|
stringBuffer.append(" AND ");
|
|
|
|
stringBuffer.append(setObject(field.getName(),QueryType.EQ,value));
|
|
|
|
}
|
|
|
|
} catch (IllegalAccessException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean haveGetMethod(Method[] methods,Field field)
|
|
|
|
{
|
|
|
|
for (Method method:methods) //如何没有get方法就过滤掉
|
|
|
|
{
|
|
|
|
if(method.getName().equals("get"+ org.apache.commons.lang3.StringUtils.capitalize(field.getName())))
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
} |
...
|
...
|
|