From 934f29282ee5578281ee3e50f6c5addfb9d88aaf Mon Sep 17 00:00:00 2001 From: SSH4557 Date: Wed, 4 Apr 2018 14:22:40 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/actable/dao/common/BaseMysqlCRUDMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 883e845..b2c95f5 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); -- Gitee From 8987c49bd191f643f1f36eb856a6c3d3a3be6707 Mon Sep 17 00:00:00 2001 From: sunchenbin Date: Wed, 4 Apr 2018 16:59:24 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0mybatis=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E4=B8=BA3.3.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 18 ++---------------- .../common/BaseMysqlCRUDManagerImpl.java | 2 +- .../system/SysMysqlCreateTableManagerImpl.java | 2 +- 3 files changed, 4 insertions(+), 18 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index eb4f67a..0e1588a 100644 --- a/mybatis-enhance-actable/pom.xml +++ b/mybatis-enhance-actable/pom.xml @@ -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/manager/common/BaseMysqlCRUDManagerImpl.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/manager/common/BaseMysqlCRUDManagerImpl.java index 0d966e6..c70332f 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; 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 3e0fdda..bee7582 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; -- Gitee From 9105fdce1d19d01f5c6f5586fb657ce938c61f78 Mon Sep 17 00:00:00 2001 From: sunchenbin Date: Sat, 14 Apr 2018 15:24:18 +0800 Subject: [PATCH 3/5] =?UTF-8?q?list=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mybatis-enhance-actable/pom.xml | 2 +- .../mybatis/actable/command/BaseModel.java | 37 +++++++-- .../dao/common/BaseMysqlCRUDMapper.java | 8 +- .../manager/common/BaseMysqlCRUDManager.java | 4 +- .../common/BaseMysqlCRUDManagerImpl.java | 77 +++++++++++++++---- .../mapping/common/BaseMysqlCRUDMapper.xml | 52 +++++++++---- 6 files changed, 141 insertions(+), 39 deletions(-) diff --git a/mybatis-enhance-actable/pom.xml b/mybatis-enhance-actable/pom.xml index 0e1588a..a62c063 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 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 b598a9f..f9cc97b 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/dao/common/BaseMysqlCRUDMapper.java b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/dao/common/BaseMysqlCRUDMapper.java index b2c95f5..7061b25 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 @@ -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 3d3a958..6b4222e 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 c70332f..71e9a99 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 @@ -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/mapping/common/BaseMysqlCRUDMapper.xml b/mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/mapping/common/BaseMysqlCRUDMapper.xml index 5147dd9..9789c9b 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 @@ + + + -- Gitee From 3899ab1b5e4c02cda753ad69d13997bac85127af Mon Sep 17 00:00:00 2001 From: sunchenbin Date: Sat, 14 Apr 2018 15:25:15 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=AF=B9=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actable/command/PageResultCommand.java | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 mybatis-enhance-actable/src/main/java/com/gitee/sunchenbin/mybatis/actable/command/PageResultCommand.java 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 0000000..4523069 --- /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; + } + +} -- Gitee From ac8b6d605d892ecac63fd58ca41eb6f0889e2600 Mon Sep 17 00:00:00 2001 From: sun5769675 Date: Sat, 14 Apr 2018 15:55:10 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E6=9B=B4=E6=96=B01.0.3=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4ab44c1..d254155 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文件的内容如下: -- Gitee