diff --git a/README.md b/README.md index 4ab44c179f663f7acc50629ebf5a0608598b4613..d254155e719eb73b174d24d1af767269d60032dd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# mybatis-enhance-actable-1.0.2 +# mybatis-enhance-actable-1.0.3 该项目是从之前写过的一个框架中抽取出来的,本身是对Mybatis做的增强功能,为了能够使习惯了hibernate框架的开发者能够快速的入手Mybatis,我给他取名叫做 “A.C.Table” 本意是自动建表的意思,A.C.Table是一个基于Spring和Mybatis的Maven项目,增强了Mybatis的功能,过配置model注解的方式来创建表,修改表结构,并且实现了共通的CUDR功能提升开发效率,目前仅支持Mysql,后续可能会扩展针对其他数据库的支持。 @@ -12,15 +12,16 @@ A.C.Table是采用了Spring、Mybatis技术的Maven结构,详细介绍如下 5. 再次声明A.C.Table目前仅支持mysql数据库(版本1.0.1) 6. 修复了不同数据库中有相同表名时,启动报错的问题。(版本1.0.2) 7. 修复了model属性名与表字段名不一致时公共的查询方法查不出数据的问题。(版本1.0.2) +8. 增加了对公共的CUDR方法的优化,保存成功会返回id,query查询时可以设置参数进行分页查询(pageSize:int类型标识每页数量,currentPage:int类型标识当前第几页,start:int类型从第几条开始,orderField:string类型排序字段,sortStr:string类型排序方式(desc,asc))(版本1.0.3) **使用步骤方法** -1. 使用该功能的项目需要依赖mybatis-enhance-actable-1.0.2.jar +1. 使用该功能的项目需要依赖mybatis-enhance-actable-1.0.3.jar 已上传至maven中央仓库,使用时pom文件中增加如下依赖 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 1.0.2 + 1.0.3 2. 在你的web项目上创建个目录比如config下面创建个文件autoCreateTable.properties文件的内容如下: diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index eb4f67af9977e6f5f713796baa81bc31896a95de..a62c0637aebff5c3be9d5a6c5753aad91539521e 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.gitee.sunchenbin.mybatis.actable mybatis-enhance-actable - 1.0.2 + 1.0.3 org.sonatype.oss @@ -67,26 +67,12 @@ provided - - - - org.mybatis - mybatis - 3.4.3 - provided - - - - org.apache.commons - commons-lang3 - 3.4 - provided - + diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java index b598a9ffd18a7537c097cc3e9d5fe2875bc1a45d..f9cc97b82a9c3bc13c32dd9121c22aafb0d4d18e 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/BaseModel.java @@ -14,17 +14,24 @@ public class BaseModel implements Serializable{ private static final long serialVersionUID = -2467322075253424352L; /** - * 当前页码 + * 当前页码,请先设置pageSize,否则使用默认的10 */ public int currentPage; /** * 每页显示多少条,默认10条 */ - public int pageSize; + public int pageSize = 10; public int start;// (currentPage-1)*pageSize + + public String orderField; + + public String sortStr = DESC; + + public static String DESC = "desc"; + public static String ASC = "asc"; public int getCurrentPage(){ return currentPage; @@ -38,10 +45,6 @@ public class BaseModel implements Serializable{ public int getPageSize(){ - if (this.pageSize == 0) { - // 默认值设为10 - this.pageSize = 10; - } return pageSize; } @@ -61,5 +64,27 @@ public class BaseModel implements Serializable{ this.start = start; } + + public String getOrderField() { + return orderField; + } + + + public void setOrderField(String orderField) { + this.orderField = orderField; + } + + + public String getSortStr() { + return sortStr; + } + + + public void setSortStr(String sortStr) { + this.sortStr = sortStr; + } + + + } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/PageResultCommand.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/PageResultCommand.java new file mode 100644 index 0000000000000000000000000000000000000000..45230697145ecb469cc219027370c794a5be74c4 --- /dev/null +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/PageResultCommand.java @@ -0,0 +1,48 @@ +package com.gitee.sunchenbin.mybatis.actable.command; + +import java.io.Serializable; +import java.util.List; + +public class PageResultCommand implements Serializable{ + + private static final long serialVersionUID = -8251489884049418166L; + + private Integer draw; + private Integer recordsTotal; + private Integer recordsFiltered; + + private List data; + + public Integer getDraw() { + return draw; + } + + public void setDraw(Integer draw) { + this.draw = draw; + } + + public Integer getRecordsTotal() { + return recordsTotal; + } + + public void setRecordsTotal(Integer recordsTotal) { + this.recordsTotal = recordsTotal; + } + + public Integer getRecordsFiltered() { + return recordsFiltered; + } + + public void setRecordsFiltered(Integer recordsFiltered) { + this.recordsFiltered = recordsFiltered; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + +} diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java index 883e845835368085ade982878c2d06d2230ef2a1..7061b25cd7e6adbcfd360ee7a576fa062d5368c4 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java @@ -19,13 +19,13 @@ public interface BaseMysqlCRUDMapper { /** * 保存 - * @param tableMap 表结构的map + * @param saveOrUpdateDataCommand id+表结构的map */ public void save(SaveOrUpdateDataCommand saveOrUpdateDataCommand); /** * 更新 - * @param tableMap 表结构的map + * @param saveOrUpdateDataCommand id+表结构的map */ public void update(SaveOrUpdateDataCommand saveOrUpdateDataCommand); @@ -39,8 +39,12 @@ public interface BaseMysqlCRUDMapper { * 查询 * @param tableMap 表结构的map */ - public List> query(@Param("tableMap") Map> tableMap); + public List> query(@Param("tableMap") Map tableMap); - + /** + * 查询的count + * @param tableMap 表结构的map + */ + public int queryCount(@Param("tableMap") Map tableMap); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java index 3d3a95876dd65be9a89484552db8afc21c3e2fdd..6b4222eb060d65c88eea5405d5807781c3f5c55e 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManager.java @@ -2,6 +2,8 @@ package com.gitee.sunchenbin.mybatis.actable.manager.common; import java.util.List; +import com.gitee.sunchenbin.mybatis.actable.command.PageResultCommand; + public interface BaseMysqlCRUDManager{ /** @@ -24,5 +26,5 @@ public interface BaseMysqlCRUDManager{ * @param model类型 * @param t 要查询的model类型数据 */ - List query(T t); + PageResultCommand query(T t); } diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java index 0d966e62c1852953969f6e3a58569a15212d12b8..71e9a994faf3af951b6919101916944c27a8743d 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java @@ -6,7 +6,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -15,6 +15,7 @@ import org.springframework.transaction.annotation.Transactional; import com.gitee.sunchenbin.mybatis.actable.annotation.Column; import com.gitee.sunchenbin.mybatis.actable.annotation.Table; +import com.gitee.sunchenbin.mybatis.actable.command.PageResultCommand; import com.gitee.sunchenbin.mybatis.actable.command.SaveOrUpdateDataCommand; import com.gitee.sunchenbin.mybatis.actable.dao.common.BaseMysqlCRUDMapper; @@ -40,6 +41,7 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ Map> tableMap = new HashMap>(); Map dataMap = new HashMap(); Map keyFieldMap = new HashMap(); + Integer updateId = null; for (Field field : declaredFields){ try{ // 私有属性需要设置访问权限 @@ -54,6 +56,7 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ if (column.isKey() && field.get(obj) != null && (new Integer(field.get(obj).toString())) > 0) { isSave = false; keyFieldMap.put(field.getName(), field.get(obj)); + updateId = (Integer) field.get(obj); } // 如果是自增,并且是保存的场合,不需要添加到map中做保存 @@ -81,7 +84,7 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ SaveOrUpdateDataCommand saveOrUpdateDataCommand = new SaveOrUpdateDataCommand(tableMap); // 执行更新操作根据主键 baseMysqlCRUDMapper.update(saveOrUpdateDataCommand); - return saveOrUpdateDataCommand.getId(); + return updateId; } } @@ -126,27 +129,58 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ } @SuppressWarnings("unchecked") - public List query(T obj){ + public PageResultCommand query(T obj){ + String startKey = "start"; + String sizeKey = "pageSize"; + String currentPageKey = "currentPage"; + String orderFieldKey = "orderField"; + String sortKey = "sortStr"; + Integer startVal = null; + Integer sizeVal = null; + Integer currentPageVal = null; + String orderFieldVal = null; + String sortVal = null; + PageResultCommand pageResultCommand = new PageResultCommand(); // 得到表名 Table tableName = obj.getClass().getAnnotation(Table.class); if ((tableName == null) || (tableName.name() == null || tableName.name() == "")) { log.error("必须使用model中的对象!"); - return null; + return pageResultCommand; } Field[] declaredFields = getAllFields(obj); - Map> tableMap = new HashMap>(); + Map tableMap = new HashMap(); Map dataMap = new HashMap(); for (Field field : declaredFields){ - // 设置访问权限 - field.setAccessible(true); - // 得到字段的配置 - Column column = field.getAnnotation(Column.class); - if (column == null) { - log.info("该field没有配置注解不是表中在字段!"); - continue; - } try{ - dataMap.put(column.name(), field.get(obj)); + // 设置访问权限 + field.setAccessible(true); + // 获取分页start和size + if(startKey.equals(field.getName())) { + startVal = (Integer) field.get(obj); + } + if(sizeKey.equals(field.getName())) { + sizeVal = (Integer) field.get(obj); + } + if(currentPageKey.equals(field.getName())) { + currentPageVal = (Integer) field.get(obj); + } + if(orderFieldKey.equals(field.getName())) { + orderFieldVal = (String) field.get(obj); + } + if(sortKey.equals(field.getName())) { + sortVal = (String) field.get(obj); + } + // 得到字段的配置 + Column column = field.getAnnotation(Column.class); + if (column == null) { + log.info("该field没有配置注解不是表中在字段!"); + continue; + } + if (field.get(obj) instanceof String && field.get(obj) != null && "".equals(field.get(obj))) { + dataMap.put(column.name(), null); + }else { + dataMap.put(column.name(), field.get(obj)); + } }catch (IllegalArgumentException e){ e.printStackTrace(); }catch (IllegalAccessException e){ @@ -154,6 +188,14 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ } } tableMap.put(tableName.name(), dataMap); + if(currentPageVal != null && currentPageVal > 0) { + tableMap.put(startKey, startVal); + tableMap.put(sizeKey, sizeVal); + } + if(orderFieldVal != null && orderFieldVal != "") { + tableMap.put(orderFieldKey, orderFieldVal); + tableMap.put(sortKey, sortVal); + } List> query = baseMysqlCRUDMapper.query(tableMap); List list = new ArrayList(); @@ -179,8 +221,13 @@ public class BaseMysqlCRUDManagerImpl implements BaseMysqlCRUDManager{ }catch (IllegalAccessException e){ e.printStackTrace(); } - - return list; + if (null != list) { + pageResultCommand.setData(list); + int queryCount = baseMysqlCRUDMapper.queryCount(tableMap); + pageResultCommand.setRecordsFiltered(queryCount); + pageResultCommand.setRecordsTotal(queryCount); + } + return pageResultCommand; } /** diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java index 3e0fdda3c55fe3b246db5a463da19a6c3eceecf7..bee758284b45c71de244532c9b5af32130b24e64 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/system/SysMysqlCreateTableManagerImpl.java @@ -8,7 +8,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang.ArrayUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; diff --git a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml index 5147dd9b26d9830d0e8f838df3cd1a3ef1c6be52..9789c9bb1f281a585e18991e61a6930a67ba3857 100644 --- a/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml +++ b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml @@ -38,11 +38,11 @@ - where + where 1=1 - `${field}` = #{fieldvalue} + and `${field}` = #{fieldvalue} @@ -54,10 +54,10 @@ delete from `${key}` - where - + where 1=1 + - `${field}` = #{fieldvalue} + and `${field}` = #{fieldvalue} @@ -69,16 +69,40 @@ + + +