|
@@ -23,10 +23,7 @@ import org.apache.commons.beanutils.PropertyUtilsBean;
|
|
|
import org.apache.ibatis.mapping.ResultMap;
|
|
|
import org.apache.ibatis.mapping.ResultMapping;
|
|
|
import org.hswebframework.ezorm.core.ValueConverter;
|
|
|
-import org.hswebframework.ezorm.core.param.InsertParam;
|
|
|
-import org.hswebframework.ezorm.core.param.QueryParam;
|
|
|
-import org.hswebframework.ezorm.core.param.Term;
|
|
|
-import org.hswebframework.ezorm.core.param.UpdateParam;
|
|
|
+import org.hswebframework.ezorm.core.param.*;
|
|
|
import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData;
|
|
|
import org.hswebframework.ezorm.rdb.meta.RDBDatabaseMetaData;
|
|
|
import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData;
|
|
@@ -39,11 +36,16 @@ import org.hswebframework.ezorm.rdb.render.dialect.Dialect;
|
|
|
import org.hswebframework.ezorm.rdb.render.dialect.H2RDBDatabaseMetaData;
|
|
|
import org.hswebframework.ezorm.rdb.render.dialect.MysqlRDBDatabaseMetaData;
|
|
|
import org.hswebframework.ezorm.rdb.render.dialect.OracleRDBDatabaseMetaData;
|
|
|
+import org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper;
|
|
|
import org.hswebframework.ezorm.rdb.render.support.simple.CommonSqlRender;
|
|
|
import org.hswebframework.ezorm.rdb.render.support.simple.SimpleWhereSqlBuilder;
|
|
|
import org.hswebframework.web.BusinessException;
|
|
|
import org.hswebframework.web.commons.entity.factory.EntityFactory;
|
|
|
import org.hswebframework.web.dao.mybatis.builder.jpa.JpaAnnotationParser;
|
|
|
+import org.hswebframework.web.dao.mybatis.mapper.EnumDicTermTypeMapper;
|
|
|
+import org.hswebframework.web.dao.mybatis.mapper.h2.H2EnumDicInTermTypeMapper;
|
|
|
+import org.hswebframework.web.dao.mybatis.mapper.mysql.MysqlEnumDicInTermTypeMapper;
|
|
|
+import org.hswebframework.web.dao.mybatis.mapper.oracle.OracleEnumDicInTermTypeMapper;
|
|
|
import org.hswebframework.web.dao.mybatis.plgins.pager.Pager;
|
|
|
import org.hswebframework.web.dao.mybatis.MybatisUtils;
|
|
|
import org.hswebframework.utils.StringUtils;
|
|
@@ -55,6 +57,9 @@ import java.util.*;
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
import java.util.concurrent.ConcurrentMap;
|
|
|
|
|
|
+import static org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper.notSupportArray;
|
|
|
+import static org.hswebframework.ezorm.rdb.render.dialect.term.BoostTermTypeMapper.supportArray;
|
|
|
+
|
|
|
/**
|
|
|
* 使用easyorm 动态构建 sql
|
|
|
*
|
|
@@ -67,7 +72,7 @@ public class EasyOrmSqlBuilder {
|
|
|
|
|
|
public EntityFactory entityFactory;
|
|
|
|
|
|
- private static final EasyOrmSqlBuilder instance = new EasyOrmSqlBuilder();
|
|
|
+ private static final EasyOrmSqlBuilder instance = new EasyOrmSqlBuilder();
|
|
|
protected static final Map<Class, String> simpleName = new HashMap<>();
|
|
|
|
|
|
protected PropertyUtilsBean propertyUtils = BeanUtilsBean.getInstance().getPropertyUtils();
|
|
@@ -97,6 +102,24 @@ public class EasyOrmSqlBuilder {
|
|
|
simpleName.put(short.class, "short");
|
|
|
simpleName.put(char.class, "char");
|
|
|
simpleName.put(byte.class, "byte");
|
|
|
+
|
|
|
+ Dialect.MYSQL.setTermTypeMapper(TermType.eq, supportArray(new EnumDicTermTypeMapper(Dialect.MYSQL, false)));
|
|
|
+ Dialect.MYSQL.setTermTypeMapper(TermType.in, supportArray(new MysqlEnumDicInTermTypeMapper(false)));
|
|
|
+ Dialect.MYSQL.setTermTypeMapper(TermType.not, supportArray(new EnumDicTermTypeMapper(Dialect.MYSQL, true)));
|
|
|
+ Dialect.MYSQL.setTermTypeMapper(TermType.nin, supportArray(new MysqlEnumDicInTermTypeMapper(true)));
|
|
|
+
|
|
|
+
|
|
|
+ Dialect.H2.setTermTypeMapper(TermType.eq, supportArray(new EnumDicTermTypeMapper(Dialect.H2, false)));
|
|
|
+ Dialect.H2.setTermTypeMapper(TermType.in, supportArray(new H2EnumDicInTermTypeMapper(false)));
|
|
|
+ Dialect.H2.setTermTypeMapper(TermType.not, supportArray(new EnumDicTermTypeMapper(Dialect.H2, true)));
|
|
|
+ Dialect.H2.setTermTypeMapper(TermType.nin, supportArray(new H2EnumDicInTermTypeMapper(true)));
|
|
|
+
|
|
|
+
|
|
|
+ Dialect.ORACLE.setTermTypeMapper(TermType.eq, supportArray(new EnumDicTermTypeMapper(Dialect.ORACLE, false)));
|
|
|
+ Dialect.ORACLE.setTermTypeMapper(TermType.in, supportArray(new OracleEnumDicInTermTypeMapper(false)));
|
|
|
+ Dialect.ORACLE.setTermTypeMapper(TermType.not, supportArray(new EnumDicTermTypeMapper(Dialect.ORACLE, true)));
|
|
|
+ Dialect.ORACLE.setTermTypeMapper(TermType.nin, supportArray(new OracleEnumDicInTermTypeMapper(true)));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
public static String getJavaType(Class type) {
|
|
@@ -107,9 +130,9 @@ public class EasyOrmSqlBuilder {
|
|
|
return javaType;
|
|
|
}
|
|
|
|
|
|
- private final RDBDatabaseMetaData mysql = new MysqlMeta();
|
|
|
+ private final RDBDatabaseMetaData mysql = new MysqlMeta();
|
|
|
private final RDBDatabaseMetaData oracle = new OracleMeta();
|
|
|
- private final RDBDatabaseMetaData h2 = new H2Meta();
|
|
|
+ private final RDBDatabaseMetaData h2 = new H2Meta();
|
|
|
|
|
|
private final ConcurrentMap<RDBDatabaseMetaData, Map<String, RDBTableMetaData>> metaCache = new ConcurrentHashMap<RDBDatabaseMetaData, Map<String, RDBTableMetaData>>() {
|
|
|
@Override
|
|
@@ -190,7 +213,7 @@ public class EasyOrmSqlBuilder {
|
|
|
});
|
|
|
cache.put(cacheKey, rdbTableMetaData);
|
|
|
if (useJpa) {
|
|
|
- Class type = entityFactory.getInstanceType(resultMaps.getType());
|
|
|
+ Class type = entityFactory == null ? resultMaps.getType() : entityFactory.getInstanceType(resultMaps.getType());
|
|
|
RDBTableMetaData parseResult = JpaAnnotationParser.parseMetaDataFromEntity(type);
|
|
|
if (parseResult != null) {
|
|
|
for (RDBColumnMetaData columnMetaData : parseResult.getColumns()) {
|