diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java index 59631dd166e3a2794c2d675a7e6dd51e3a82f169..e44238f5909851f694b86fca44d54eb47b530860 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java @@ -73,7 +73,11 @@ public interface IJpaBaseMapper { @DeleteProvider(type = MapperSqlProvider.class, method = "remove") public Integer remove(@Param ("entityClass")Class entityClass,@Param ("id") String id); - @DeleteProvider(type = MapperSqlProvider.class, method = "batchDelete") - public Integer batchDelete(@Param ("entityClass")Class entityClass,@Param ("idList") List idList); + @DeleteProvider(type = MapperSqlProvider.class, method = "deleteBatch") + public Integer deleteBatch(@Param ("entityClass")Class entityClass,@Param ("idList") List idList); + + @DeleteProvider(type = MapperSqlProvider.class, method = "logicDelete") + public Integer logicDelete(@Param ("entityClass")Class entityClass,@Param ("idList") List idList); + } diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java index 72caff6c52adc7fe8c217a40d27beee95c0c9325..1d8461505aababf8f8cf62f37c79b06ec3b4e981 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java @@ -22,7 +22,8 @@ import java.lang.reflect.Type; import java.util.List; import java.util.concurrent.TimeUnit; -import org.apache.log4j.Logger; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.apache.mybatis.jpa.PageResultsSqlCache; import org.apache.mybatis.jpa.util.BeanUtil; import org.apache.mybatis.jpa.util.InstanceUtil; @@ -41,7 +42,7 @@ import com.github.benmanes.caffeine.cache.Caffeine; */ public class JpaBaseService { - final static Logger _logger = Logger.getLogger(JpaBaseService.class); + final static Logger _logger = LoggerFactory.getLogger(JpaBaseService.class); @JsonIgnore //定义全局缓存 @@ -76,7 +77,7 @@ public class JpaBaseService { */ @SuppressWarnings("unchecked") public JpaBaseService(@SuppressWarnings("rawtypes") Class cls) { - _logger.trace("class : " + cls.getSimpleName()); + _logger.trace("class : {}" , cls.getSimpleName()); mapperClass = cls.getSimpleName(); Type[] pType = ((ParameterizedType) this.getClass().getGenericSuperclass()).getActualTypeArguments(); if (pType != null && pType.length >= 1) { @@ -85,7 +86,7 @@ public class JpaBaseService { _logger.error("invalide initail, need generic type parameter! "); throw new RuntimeException("invalide initail, need generic type parameter!"); } - _logger.trace("class : " + entityClass.getSimpleName()); + _logger.trace("class : {}" , entityClass.getSimpleName()); } /** @@ -93,10 +94,14 @@ public class JpaBaseService { * @param mapperClass */ public JpaBaseService(String mapperClass) { - _logger.trace("class : " + mapperClass); + _logger.trace("class : {}" , mapperClass); this.mapperClass = mapperClass; } + public void setMapper(IJpaBaseMapper mapper) { + this.mapper = mapper; + } + //get or set mapper /** * Load Mapper from spring container by mapperClass as bean id @@ -106,22 +111,18 @@ public class JpaBaseService { public IJpaBaseMapper getMapper() { try { if(mapper == null) { - String mapperClassBean=mapperClass.toLowerCase().charAt(0)+mapperClass.substring(1); - _logger.info("mapperClass Bean is " +mapperClassBean); + String mapperClassBean = mapperClass.toLowerCase().charAt(0) + mapperClass.substring(1); + _logger.info("mapperClass Bean is {}" , mapperClassBean); mapper = (IJpaBaseMapper) WebContext.getBean(mapperClassBean); } } catch(Exception e) { - _logger.error("getMapper Exception ",e); + _logger.error("getMapper Exception " , e); } finally { } return mapper; } - public void setMapper(IJpaBaseMapper mapper) { - this.mapper = mapper; - } - //follow function for Query /** @@ -134,15 +135,15 @@ public class JpaBaseService { entity.setStartRow(calculateStartRow(entity.getPageNumber() ,entity.getPageSize())); entity.setPageable(true); - List resultslist=getMapper().queryPageResults(entity); + List resultslist = getMapper().queryPageResults(entity); entity.setPageable(false); - Integer totalPage=resultslist.size(); + Integer totalPage = resultslist.size(); Integer totalCount = 0; - if(entity.getPageNumber()==1&&totalPage(entity.getPageNumber(),entity.getPageSize(),totalPage,totalCount,resultslist); @@ -150,7 +151,6 @@ public class JpaBaseService { //follow function for Query - /** * query page list entity by entity * @param entity @@ -162,20 +162,20 @@ public class JpaBaseService { entity.setStartRow(calculateStartRow(entity.getPageNumber() ,entity.getPageSize())); entity.setPageable(true); - List resultslist=null; + List resultslist = null; try { resultslist = (List)InstanceUtil.invokeMethod(getMapper(), mapperId, new Object[]{entity}); } catch (Exception e) { - _logger.error("queryPageResults Exception ",e); + _logger.error("queryPageResults Exception " , e); } entity.setPageable(false); - Integer totalPage=resultslist.size(); + Integer totalPage = resultslist.size(); Integer totalCount = 0; - if(entity.getPageNumber()==1&&totalPage(entity.getPageNumber(),entity.getPageSize(),totalPage,totalCount,resultslist); @@ -188,17 +188,17 @@ public class JpaBaseService { */ @SuppressWarnings("unchecked") public Integer queryPageResultsCount(T entity) { + Integer count = 0; try { if(entity == null) { entity = (T) entityClass.newInstance(); } - Integer count=getMapper().queryPageResultsCount(entity); - _logger.debug("queryCount count : "+count); - return count; + count = getMapper().queryPageResultsCount(entity); + _logger.debug("queryCount count : {}" , count); } catch(Exception e) { - _logger.error("queryPageResultsCount Exception ",e); + _logger.error("queryPageResultsCount Exception " , e); } - return null; + return count; } /** @@ -211,11 +211,10 @@ public class JpaBaseService { try { if(entity == null) { entity = (T) entityClass.newInstance(); - return getMapper().query(entity); } return getMapper().query(entity); } catch(Exception e) { - _logger.error("query Exception ",e); + _logger.error("query Exception " , e); } return null; } @@ -223,10 +222,9 @@ public class JpaBaseService { public List findAll() { try { - return getMapper().findAll(this.entityClass); } catch(Exception e) { - _logger.error("findAll Exception ",e); + _logger.error("findAll Exception " , e); } return null; } @@ -238,10 +236,10 @@ public class JpaBaseService { */ public T load(T entity) { try { - List entityList=getMapper().query(entity); - return entityList!=null&&entityList.size()>0?entityList.get(0):null; + List entityList = getMapper().query(entity); + return ((entityList != null) && ( entityList.size() > 0 ))?entityList.get(0) : null; } catch(Exception e) { - _logger.error("load Exception ",e); + _logger.error("load Exception " , e); } return null; } @@ -253,20 +251,20 @@ public class JpaBaseService { */ public T get(String id) { try { - _logger.debug("entityClass "+entityClass.toGenericString()+" , primaryKey "+id); + _logger.debug("entityClass {} , primaryKey {}" , entityClass.toGenericString() , id); return getMapper().get(this.entityClass,id); } catch(Exception e) { - _logger.error("get Exception ",e); + _logger.error("get Exception " , e); } return null; } public T find(Class entityClass,Object primaryKey) { try { - _logger.debug("entityClass "+entityClass.toGenericString()+" , primaryKey "+primaryKey); + _logger.debug("entityClass {} , primaryKey {}" , entityClass.toGenericString() , primaryKey); return getMapper().get(entityClass,primaryKey.toString()); } catch(Exception e) { - _logger.error("find Exception ",e); + _logger.error("find Exception " , e); } return null; } @@ -279,18 +277,40 @@ public class JpaBaseService { */ public boolean insert(T entity) { try { - Integer count=getMapper().insert(entity); - _logger.debug("insert count : "+count); - + Integer count = getMapper().insert(entity); + _logger.debug("insert count : {}" , count); return count > 0; } catch(Exception e) { - _logger.error("insert Exception ",e); + _logger.error("insert Exception " , e); + } + return false; + } + + /** + * insert entity with batch + * @param listEntity + * @return + */ + public boolean insertBatch(List listEntity){ + try { + if(BeanUtil.isNotNull(listEntity)) { + Integer count = 0; + for(T entity : listEntity) { + if(getMapper().insert(entity)>0) { + count ++; + } + } + _logger.debug("Insert Batch count : {}" , count); + return count > 0; + } + } catch(Exception e) { + _logger.error("Insert Batch Exception " , e); } return false; } /** - * JPA persist + * JPA persist , save * @param entity * @return boolean */ @@ -299,13 +319,12 @@ public class JpaBaseService { } /** - * JPA merge + * JPA merge , save or update * @param entity * @return boolean */ public boolean merge(T entity) { T loadedEntity = load(entity); - if(loadedEntity == null) { return insert(entity); }else { @@ -320,13 +339,11 @@ public class JpaBaseService { */ public boolean update(T entity) { try { - Integer count=getMapper().update(entity); - _logger.debug("update count : "+count); - + _logger.debug("update count : {}" , count); return count > 0; } catch(Exception e) { - _logger.error("update Exception ",e); + _logger.error("update Exception " , e); } return false; } @@ -339,79 +356,80 @@ public class JpaBaseService { public boolean delete(T entity) { try { Integer count=getMapper().delete(entity); - _logger.debug("delete count : "+count); - + _logger.debug("delete count : {}" , count); return count > 0; } catch(Exception e) { - _logger.error("delete Exception ",e); + _logger.error("delete Exception " , e); } return false; } - - public boolean remove(String id){ + /** + * batch delete entity by id List + * @param ids + * @return + */ + public boolean deleteBatch(List idList) { try { - - Integer count=getMapper().remove(this.entityClass,id); - _logger.debug("remove count : "+count); - + _logger.trace("deleteBatch {}" , idList); + Integer count = getMapper().deleteBatch(this.entityClass,idList); + _logger.debug("deleteBatch count : {}" , count); return count > 0; } catch(Exception e) { - _logger.error("remove Exception ",e); + _logger.error("deleteBatch Exception " , e); } return false; } /** - * batch insert entity - * @param listEntity + * batch delete entity by ids,split with , + * @param ids * @return */ - public boolean batchInsert(List listEntity){ + public boolean deleteBatch(String ids) { + List idList = StringUtils.string2List(ids, ","); + return deleteBatch(idList); + } + + public boolean deleteBatch(String ids , String split) { + List idList = StringUtils.string2List(ids, split); + return deleteBatch(idList); + } + + + public boolean remove(String id){ try { - if(BeanUtil.isNotNull(listEntity)) { - Integer count=0; - for(T entity : listEntity) { - if(getMapper().insert(entity)>0) { - count++; - } - } - _logger.debug("batchInsert count : "+count); - return count > 0; - } + Integer count=getMapper().remove(this.entityClass,id); + _logger.debug("remove count : {}" , count); + return count > 0; } catch(Exception e) { - _logger.error("batchInsert Exception ",e); + _logger.error("remove Exception " , e); } return false; } - /** - * batch delete entity by id List - * @param ids - * @return - */ - public boolean batchDelete(List idList) { + public boolean logicDelete(List idList) { try { - Integer count=getMapper().batchDelete(this.entityClass,idList); - _logger.debug("batchDelete count : "+count); - + _logger.trace("logicDelete {}" , idList); + Integer count = getMapper().logicDelete(this.entityClass,idList); + _logger.debug("logicDelete count : {}" , count); return count > 0; } catch(Exception e) { - _logger.error("batchDelete Exception ",e); + _logger.error("logicDelete Exception " , e); } - return false; + return true; } - /** - * batch delete entity by ids,split with , - * @param ids - * @return - */ - public boolean batchDelete(String ids) { + public boolean logicDelete(String ids) { List idList = StringUtils.string2List(ids, ","); - return batchDelete(idList); + return logicDelete(idList); } - + + public boolean logicDelete(String ids , String split) { + List idList = StringUtils.string2List(ids, split); + return logicDelete(idList); + } + //follow is for query grid paging /** @@ -424,7 +442,7 @@ public class JpaBaseService { if(totalCount == null) { return retTotalCount; }else{ - retTotalCount=Integer.parseInt(totalCount.toString()); + retTotalCount = Integer.parseInt(totalCount.toString()); } return retTotalCount; } diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java index 8b16852742c1880e2ac66ce3a35439a025f142f1..1cc8355b8879bba53914bdeb8d5ace3a0d3439ae 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java @@ -60,7 +60,7 @@ public class JpaPageResults { */ public JpaPageResults(int currentPage,int pageResults,Long recordsCount) { pageCount(currentPage,pageResults, recordsCount); - _logger.debug("Grid page : "+page+" , records : "+records+" , total : "+total); + _logger.debug("JpaPageResults : {} , records : {} , total : {}",page,records,total); } /** * 构造函数 diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java index 2864fdd49e5ebbdbdfafbe2d2d8b51bcbaaf3a11..29be310d08b73d8cc7a807cc0367467ab5b83e10 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java @@ -48,6 +48,10 @@ public class MapperMetadata { public static String GET_SQL = "_GET_SQL"; public static String FINDALL_SQL = "_FINDALL_SQL"; public static String REMOVE_SQL = "_REMOVE_SQL"; + public static String BATCHDELETE_SQL = "_BATCHDELETE_SQL"; + public static String LOGICDELETE_SQL = "_LOGICDELETE_SQL"; + + } public static String ENTITY_CLASS = "entityClass"; diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java index 1289f24a9b6ccb174f97d5f310e96c440a76e9da..47425ee42cc9c53240ef87e2a3c2ffd13d3ccbdf 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java @@ -53,10 +53,14 @@ public class MapperSqlProvider { return new SqlProviderDelete().execute(parametersMap); } - public String batchDelete(Map parametersMap) { + public String deleteBatch(Map parametersMap) { return new SqlProviderDelete().batchDelete(parametersMap); } + public String logicDelete(Map parametersMap) { + return new SqlProviderDelete().logicDelete(parametersMap); + } + /** * @param entity * @return insert sql String diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java index 184b0d18f7c133f64c4cf60b4fa2c3e4ffac113f..cf33886f09f7decc320c63e3f848420c596053a6 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java @@ -45,13 +45,15 @@ public class SqlProviderDelete { } FieldColumnMapper idFieldColumnMapper=MapperMetadata.getIdColumn((entityClass).getSimpleName()); SQL sql=new SQL(); - sql.DELETE_FROM(MapperMetadata.getTableName(entityClass)); - sql.WHERE(idFieldColumnMapper.getColumnName()+" = #{"+idFieldColumnMapper.getFieldName()+",javaType=string,jdbcType=VARCHAR}"); + sql.DELETE_FROM(MapperMetadata.getTableName(entityClass)) + .WHERE(idFieldColumnMapper.getColumnName() + + " = #{" +idFieldColumnMapper.getFieldName() + ",javaType=string,jdbcType=VARCHAR}"); String deleteSql=sql.toString(); _logger.trace("Delete SQL \n"+deleteSql); MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + MapperMetadata.SQL_TYPE.REMOVE_SQL,deleteSql); return deleteSql; } + @SuppressWarnings("unchecked") public String batchDelete(Map parametersMap) { Class entityClass=(Class)parametersMap.get(MapperMetadata.ENTITY_CLASS); @@ -68,11 +70,36 @@ public class SqlProviderDelete { keyValue = keyValue.substring(1).replaceAll(";", ""); FieldColumnMapper idFieldColumnMapper=MapperMetadata.getIdColumn(entityClass.getSimpleName()); SQL sql=new SQL(); - sql.DELETE_FROM(MapperMetadata.getTableName(entityClass)); - sql.WHERE(idFieldColumnMapper.getColumnName()+" in ( "+keyValue+" )"); + sql.DELETE_FROM(MapperMetadata.getTableName(entityClass)) + .WHERE(idFieldColumnMapper.getColumnName()+" in ( "+keyValue+" )"); String deleteSql=sql.toString(); _logger.trace("Delete SQL \n"+deleteSql); - MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + MapperMetadata.SQL_TYPE.REMOVE_SQL,deleteSql); + MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + MapperMetadata.SQL_TYPE.BATCHDELETE_SQL,deleteSql); + return deleteSql; + } + + @SuppressWarnings("unchecked") + public String logicDelete(Map parametersMap) { + Class entityClass=(Class)parametersMap.get(MapperMetadata.ENTITY_CLASS); + MapperMetadata.buildColumnList(entityClass); + ArrayList idValues=(ArrayList)parametersMap.get("idList"); + String keyValue=""; + for(String value : idValues) { + if(value.trim().length() > 0) { + keyValue += ",'" + value + "'"; + _logger.trace("logic delete by id " + value); + } + } + //remove ; + keyValue = keyValue.substring(1).replaceAll(";", ""); + FieldColumnMapper idFieldColumnMapper=MapperMetadata.getIdColumn(entityClass.getSimpleName()); + SQL sql=new SQL(); + sql.UPDATE(MapperMetadata.getTableName(entityClass)) + .SET("status = 9") + .WHERE(idFieldColumnMapper.getColumnName()+" in ( "+keyValue+" )"); + String deleteSql=sql.toString(); + _logger.trace("logic Delete SQL \n"+deleteSql); + MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + MapperMetadata.SQL_TYPE.LOGICDELETE_SQL,deleteSql); return deleteSql; } diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java index 45c03ee28efded4404f791793148b6b986a37460..b0d3f3c408e37df8b298fe8fd75802b5a7863a79 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java @@ -68,8 +68,11 @@ public class SqlProviderInsert { )) { GeneratedValue generatedValue=listFields.get(i).getGeneratedValue(); if(generatedValue.strategy()==GenerationType.AUTO) { - if(MapperMetadata.identifierGeneratorFactory.getGeneratorStrategyMap().containsKey(generatedValue.generator().toLowerCase())) { - BeanUtil.set(entity, fieldColumnMapper.getFieldName(), MapperMetadata.identifierGeneratorFactory.generate(generatedValue.generator().toLowerCase())); + if(MapperMetadata.identifierGeneratorFactory.getGeneratorStrategyMap() + .containsKey(generatedValue.generator().toLowerCase())) { + BeanUtil.set(entity, + fieldColumnMapper.getFieldName(), + MapperMetadata.identifierGeneratorFactory.generate(generatedValue.generator().toLowerCase())); sql.VALUES(fieldColumnMapper.getColumnName(),"#{" + fieldColumnMapper.getFieldName() + "}"); } }else if(generatedValue.strategy()==GenerationType.SEQUENCE){ diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java index 62605f81e742223d312ba9a1b0caa6380e3605eb..9afba2fe6ce5d7ac7922b69d6c005cba7c9337e3 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java @@ -53,9 +53,10 @@ public class SqlProviderQuery { FieldColumnMapper idFieldColumnMapper=MapperMetadata.getIdColumn(entityClass.getSimpleName()); SQL sql=new SQL(); - sql.SELECT(selectColumnMapper(entityClass)); - sql.FROM(MapperMetadata.getTableName(entityClass)+" sel_tmp_table "); - sql.WHERE(idFieldColumnMapper.getColumnName()+" = #{"+idFieldColumnMapper.getFieldName()+"}"); + sql.SELECT(selectColumnMapper(entityClass)) + .FROM(MapperMetadata.getTableName(entityClass)+" sel_tmp_table ") + .WHERE(idFieldColumnMapper.getColumnName() + + " = #{"+idFieldColumnMapper.getFieldName() + "}"); String getSql=sql.toString(); _logger.trace("Get SQL \n"+getSql); MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + SQL_TYPE.GET_SQL,getSql); @@ -69,8 +70,8 @@ public class SqlProviderQuery { return MapperMetadata.sqlsMap.get(MapperMetadata.getTableName(entityClass) + SQL_TYPE.FINDALL_SQL); } SQL sql=new SQL(); - sql.SELECT(selectColumnMapper(entityClass)); - sql.FROM(MapperMetadata.getTableName(entityClass)+" sel_tmp_table "); + sql.SELECT(selectColumnMapper(entityClass)) + .FROM(MapperMetadata.getTableName(entityClass)+" sel_tmp_table "); String findAllSql=sql.toString(); _logger.trace("Find All SQL \n"+findAllSql); MapperMetadata.sqlsMap.put(MapperMetadata.getTableName(entityClass) + SQL_TYPE.FINDALL_SQL,findAllSql); @@ -80,8 +81,8 @@ public class SqlProviderQuery { public String execute(T entity) { MapperMetadata.buildColumnList(entity.getClass()); SQL sql=new SQL(); - sql.SELECT(selectColumnMapper(entity.getClass())); - sql.FROM(MapperMetadata.getTableName(entity.getClass())+" sel_tmp_table "); + sql.SELECT(selectColumnMapper(entity.getClass())) + .FROM(MapperMetadata.getTableName(entity.getClass())+" sel_tmp_table "); for(FieldColumnMapper fieldColumnMapper : MapperMetadata.fieldsMap.get(entity.getClass().getSimpleName())) { String fieldValue = BeanUtil.getValue(entity, fieldColumnMapper.getFieldName()); @@ -121,7 +122,8 @@ public class SqlProviderQuery { .append(" ") .append(fieldColumnMapper.getFieldName()); } - _logger.trace("Column "+ columnCount + " , ColumnName : "+fieldColumnMapper.getColumnName()+" , FieldName : " + fieldColumnMapper.getFieldName()); + _logger.trace("Column {} , ColumnName : {} , FieldName : {}" , + columnCount,fieldColumnMapper.getColumnName(),fieldColumnMapper.getFieldName()); } return selectColumn.toString(); } @@ -133,11 +135,16 @@ public class SqlProviderQuery { public String executePageResultsCount(T entity) { JpaPagination pagination=(JpaPagination)entity; //获取缓存数据 - PageResultsSqlCache pageResultsSqlCache=JpaBaseService.pageResultsBoundSqlCache.getIfPresent(pagination.getPageResultSelectUUID()); + PageResultsSqlCache pageResultsSqlCache = + JpaBaseService.pageResultsBoundSqlCache.getIfPresent(pagination.getPageResultSelectUUID()); //多个空格 tab 替换成1个空格 - String selectSql=pageResultsSqlCache.getSql().replaceAll("\r\n+", " \n").replaceAll("\n+", " \n").replaceAll("\t", " ").replaceAll(" +"," "); + String selectSql = pageResultsSqlCache.getSql() + .replaceAll("\r\n+", " \n") + .replaceAll("\n+", " \n") + .replaceAll("\t", " ") + .replaceAll(" +"," "); BoundSql boundSql=(BoundSql)pageResultsSqlCache.getBoundSql(); - _logger.trace("Count original SQL :\n" + selectSql); + _logger.trace("Count original SQL :\n{}" , selectSql); StringBuffer sql=new StringBuffer(SqlSyntax.SELECT +" "+ SqlSyntax.Functions.COUNT_ONE +" countrows_ "); StringBuffer countSql=new StringBuffer(); @@ -153,7 +160,7 @@ public class SqlProviderQuery { countSql.append(selectSql); } String countSqlLowerCase = countSql.toString().toLowerCase(); - _logger.trace("Count SQL LowerCase :\n" + countSqlLowerCase); + _logger.trace("Count SQL LowerCase :\n{}" , countSqlLowerCase); if(countSqlLowerCase.indexOf(SqlSyntax.DISTINCT + " ")>0 //去重 ||countSqlLowerCase.indexOf(" " + SqlSyntax.GROUPBY + " ")>0 //分组 @@ -167,7 +174,7 @@ public class SqlProviderQuery { }else { int fromIndex = countSqlLowerCase.indexOf(" " + SqlSyntax.FROM + " "); int orderByIndex = countSqlLowerCase.indexOf(" " + SqlSyntax.ORDERBY + " "); - _logger.trace("Count SQL from Index "+ fromIndex +" , order by " +orderByIndex); + _logger.trace("Count SQL from Index {} , order by {}" ,fromIndex,orderByIndex); if(orderByIndex > -1) { sql.append(countSql.substring(fromIndex,orderByIndex)); }else { @@ -176,7 +183,7 @@ public class SqlProviderQuery { } //删除缓存 JpaBaseService.pageResultsBoundSqlCache.invalidate(pagination.getPageResultSelectUUID()); - _logger.trace("Count SQL : \n" + sql); + _logger.trace("Count SQL : \n{}" , sql); return sql.toString(); } diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java index 3cf73779923ff3016d0e56d6f63aacaa6ed340d3..81626b9c5e46ae8c0a061f71644df9997054c6f5 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java @@ -51,7 +51,7 @@ public class SqlProviderUpdate { for (int i = 0; i < listFields.size(); i++) { FieldColumnMapper fieldColumnMapper=listFields.get(i); - _logger.trace("Field " +fieldColumnMapper.getFieldName()+" , Type "+ fieldColumnMapper.getFieldType()); + _logger.trace("Field {} , Type {}",fieldColumnMapper.getFieldName(), fieldColumnMapper.getFieldType()); if (fieldColumnMapper.isIdColumn()) { continue; @@ -71,7 +71,7 @@ public class SqlProviderUpdate { FieldColumnMapper idFieldColumnMapper=MapperMetadata.getIdColumn(entity.getClass().getSimpleName()); sql.WHERE(idFieldColumnMapper.getColumnName() + "=#{"+idFieldColumnMapper.getFieldName()+"}"); - _logger.trace("Update SQL : \n" + sql); + _logger.trace("Update SQL : \n{}" , sql); return sql.toString(); } diff --git a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java index c7499463bd3bd183eb84ff9f8919841638b17077..b40b6e42e39519a0f354807c2e9b939732d476f8 100644 --- a/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java +++ b/mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java @@ -20,7 +20,7 @@ package org.apache.mybatis.jpa.util; import java.util.ArrayList; import java.util.List; -public class StringUtils { +public class StringUtils extends org.apache.commons.lang3.StringUtils { public static boolean isNumeric(String val) { char[] chars = val.toCharArray(); @@ -55,14 +55,6 @@ public class StringUtils { return num; } - public static boolean isBlank(String str) { - return str==null || str.matches("\\s*"); - } - - public static boolean isNotBlank(String val) { - return !isBlank(val); - } - public static List string2List(String string, String split) { String[] strs = {}; if (string != null && !string.equals("")) { diff --git a/mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java b/mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java index b2aa81b9e446b96d1154bade83a7e5d1d656e4a8..781250b376e0c1d2d6d0d4f61963f5aeedaac4fb 100644 --- a/mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java +++ b/mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java @@ -134,14 +134,25 @@ public class MyBatisTestRunner { idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); idList.add("12b6ceb8-573b-4f01-ad85-cfb24cfa007c"); idList.add("dafd5ba4-d2e3-4656-bd42-178841e610fe"); - service.batchDelete(idList); + service.deleteBatch(idList); + } + + @Test + public void logicDelete() throws Exception{ + _logger.info("logicDelete..."); + List idList=new ArrayList(); + idList.add("8584804d-b5ac-45d2-9f91-4dd8e7a090a7"); + idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); + idList.add("12b6ceb8-573b-4f01-ad85-cfb24cfa007c"); + idList.add("dafd5ba4-d2e3-4656-bd42-178841e610fe"); + service.logicDelete(idList); } @Test public void batchDeleteByIds() throws Exception{ _logger.info("batchDeleteByIds..."); - service.batchDelete("2"); - service.batchDelete("2,639178432667713536"); + service.deleteBatch("2"); + service.deleteBatch("2,639178432667713536"); } @Test diff --git a/mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java b/mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java index 0a32f85f51e518cb9baf05cdde9ce4ce1418636b..6bd306da3bf973670e810b9af8a0c0ab290c93c1 100644 --- a/mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java +++ b/mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java @@ -100,7 +100,7 @@ public class MybatisJpaApplicationTest{ idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); idList.add("12b6ceb8-573b-4f01-ad85-cfb24cfa007c"); idList.add("dafd5ba4-d2e3-4656-bd42-178841e610fe"); - studentsService.batchDelete(idList); + studentsService.deleteBatch(idList); } @Test diff --git a/mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java b/mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java index 456243e3a2da811ed0e7c3d0a931d083db3c658c..af8f387f60f58ede8a27cfb24ad244eb689bab2b 100644 --- a/mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java +++ b/mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java @@ -88,7 +88,7 @@ public class MyBatisTestRunner { idList.add("ab7422e9-a91a-4840-9e59-9d911257c918"); idList.add("12b6ceb8-573b-4f01-ad85-cfb24cfa007c"); idList.add("dafd5ba4-d2e3-4656-bd42-178841e610fe"); - service.batchDelete(idList); + service.deleteBatch(idList); } @Test diff --git a/pom.xml b/pom.xml index 4666a29916d95fffbf691d2ba67bd5bdd5e00682..aecd784f8835581a68cdd9aeed87d551c72b7842 100644 --- a/pom.xml +++ b/pom.xml @@ -15,24 +15,23 @@ - 2.6 + 2.7 UTF-8 1.8 - 5.2.0.RELEASE - 2.2.6.RELEASE + 5.3.14 + 2.6.2 2.1.1 2.4.2 - 8.0.21 + 8.0.26 3.1.0 2.4 1.9 2.17.0 - 1.7.28 - 1.9.13 + 1.7.32 2.10.0 - 1.1.22 + 1.2.8 2.2.1 - 3.5.7 + 3.5.8 2.0.6 @@ -275,6 +274,11 @@ 3.2.2 + + org.apache.commons + commons-lang3 + 3.12.0 + commons-logging commons-logging