作者 钟来

完善通用mapper

@@ -49,5 +49,6 @@ @@ -49,5 +49,6 @@
49 <groupId>com.alibaba</groupId> 49 <groupId>com.alibaba</groupId>
50 <artifactId>fastjson</artifactId> 50 <artifactId>fastjson</artifactId>
51 </dependency> 51 </dependency>
  52 +
52 </dependencies> 53 </dependencies>
53 </project> 54 </project>
1 package com.zhonglai.luhui.util.sql; 1 package com.zhonglai.luhui.util.sql;
2 2
3 -import java.util.HashMap; 3 +
4 import java.util.Map; 4 import java.util.Map;
5 5
6 /** 6 /**
@@ -11,10 +11,12 @@ import java.util.Map; @@ -11,10 +11,12 @@ import java.util.Map;
11 public class BaseEntity 11 public class BaseEntity
12 { 12 {
13 private Map<String,Object[]> timeMap; //时间条件(如:{"create_time":[开始时间,结束时间]}) 13 private Map<String,Object[]> timeMap; //时间条件(如:{"create_time":[开始时间,结束时间]})
  14 +
14 private String[] keyValue; //模糊匹配的关键字(如:["value","name,no"]) 15 private String[] keyValue; //模糊匹配的关键字(如:["value","name,no"])
  16 +
15 private Map<String, QueryType> params; //字段对应的比较符号(如:{"id":"EQ"}) 17 private Map<String, QueryType> params; //字段对应的比较符号(如:{"id":"EQ"})
16 18
17 - private String orderBy; //排序(如:"id,name") 19 + private String orderBy; //排序(如:"id desc,name asc")
18 20
19 public Map<String, Object[]> getTimeMap() { 21 public Map<String, Object[]> getTimeMap() {
20 return timeMap; 22 return timeMap;
@@ -37,6 +39,14 @@ public class BaseEntity @@ -37,6 +39,14 @@ public class BaseEntity
37 return params; 39 return params;
38 } 40 }
39 41
  42 + public String getOrderBy() {
  43 + return orderBy;
  44 + }
  45 +
  46 + public void setOrderBy(String orderBy) {
  47 + this.orderBy = orderBy;
  48 + }
  49 +
40 public void setParams(Map<String, QueryType> params) { 50 public void setParams(Map<String, QueryType> params) {
41 this.params = params; 51 this.params = params;
42 } 52 }
1 package com.zhonglai.luhui.util.sql; 1 package com.zhonglai.luhui.util.sql;
2 2
3 public enum QueryType { 3 public enum QueryType {
4 - EQ,NE,GT,GTE,LT,LTE,LIKE 4 + /**
  5 + * 等于
  6 + */
  7 + EQ,
  8 + /**
  9 + * 不等于
  10 + */
  11 + NE,
  12 + /**
  13 + * 大于
  14 + */
  15 + GT,
  16 + /**
  17 + * 大于等于
  18 + */
  19 + GTE,
  20 + /**
  21 + * 小于
  22 + */
  23 + LT,
  24 + /**
  25 + * 小于等于
  26 + */
  27 + LTE,
  28 + /**
  29 + * 模糊匹配
  30 + */
  31 + LIKE
  32 +
5 } 33 }
@@ -24,18 +24,9 @@ @@ -24,18 +24,9 @@
24 <artifactId>lh-common-util</artifactId> 24 <artifactId>lh-common-util</artifactId>
25 </dependency> 25 </dependency>
26 <dependency> 26 <dependency>
27 - <groupId>tk.mybatis</groupId>  
28 - <artifactId>mapper</artifactId>  
29 - <!-- 建议使用最新版本,最新版本请从项目首页查找 --> 27 + <groupId>org.mybatis.spring.boot</groupId>
  28 + <artifactId>mybatis-spring-boot-starter</artifactId>
30 </dependency> 29 </dependency>
31 - <dependency>  
32 - <groupId>tk.mybatis</groupId>  
33 - <artifactId>mapper-spring-boot-starter</artifactId>  
34 - </dependency>  
35 -<!-- <dependency>-->  
36 -<!-- <groupId>org.mybatis.spring.boot</groupId>-->  
37 -<!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->  
38 -<!-- </dependency>-->  
39 <!--常用工具类 --> 30 <!--常用工具类 -->
40 <dependency> 31 <dependency>
41 <groupId>org.apache.commons</groupId> 32 <groupId>org.apache.commons</groupId>
1 package com.zhonglai.luhui.dao.dto; 1 package com.zhonglai.luhui.dao.dto;
2 2
3 -import com.zhonglai.luhui.dao.annotation.PublicSQLConfig;  
4 import com.zhonglai.luhui.dao.util.Sqlutil; 3 import com.zhonglai.luhui.dao.util.Sqlutil;
  4 +import com.zhonglai.luhui.util.DateUtils;
5 import com.zhonglai.luhui.util.sql.BaseEntity; 5 import com.zhonglai.luhui.util.sql.BaseEntity;
6 import com.zhonglai.luhui.util.sql.QueryType; 6 import com.zhonglai.luhui.util.sql.QueryType;
7 import org.apache.commons.lang3.StringUtils; 7 import org.apache.commons.lang3.StringUtils;
8 -import tk.mybatis.mapper.entity.Example;  
9 8
10 import java.lang.reflect.Field; 9 import java.lang.reflect.Field;
11 import java.lang.reflect.InvocationTargetException; 10 import java.lang.reflect.InvocationTargetException;
12 import java.lang.reflect.Method; 11 import java.lang.reflect.Method;
13 import java.text.MessageFormat; 12 import java.text.MessageFormat;
  13 +import java.util.Date;
14 import java.util.List; 14 import java.util.List;
15 import java.util.Map; 15 import java.util.Map;
16 16
@@ -31,11 +31,12 @@ public class PublicSQL { @@ -31,11 +31,12 @@ public class PublicSQL {
31 sb.append("INSERT INTO "+tableName); 31 sb.append("INSERT INTO "+tableName);
32 String values = ""; 32 String values = "";
33 String mfStr = ""; 33 String mfStr = "";
  34 +
34 Field[] fields = list.get(0).getClass().getDeclaredFields( ); 35 Field[] fields = list.get(0).getClass().getDeclaredFields( );
  36 + Method[] methods = list.get(0).getClass().getMethods();
35 for(Field field:fields) 37 for(Field field:fields)
36 { 38 {
37 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
38 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 39 + if(!haveGetMethod(methods,field))
39 { 40 {
40 continue; 41 continue;
41 } 42 }
@@ -87,11 +88,12 @@ public class PublicSQL { @@ -87,11 +88,12 @@ public class PublicSQL {
87 String tableName = changTableNameFromObject(object); 88 String tableName = changTableNameFromObject(object);
88 stringBuffer.append(tableName + "("); 89 stringBuffer.append(tableName + "(");
89 Field[] fields = object.getClass().getDeclaredFields( ); 90 Field[] fields = object.getClass().getDeclaredFields( );
  91 + Method[] methods = object.getClass().getMethods( );
  92 +
90 StringBuffer values = new StringBuffer("("); 93 StringBuffer values = new StringBuffer("(");
91 for(Field field:fields) 94 for(Field field:fields)
92 {// 95 {//
93 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
94 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 96 + if(!haveGetMethod(methods,field))
95 { 97 {
96 continue; 98 continue;
97 } 99 }
@@ -151,11 +153,10 @@ public class PublicSQL { @@ -151,11 +153,10 @@ public class PublicSQL {
151 sql.append(tableName + "("); 153 sql.append(tableName + "(");
152 Field[] fields = object.getClass().getDeclaredFields( ); 154 Field[] fields = object.getClass().getDeclaredFields( );
153 String values = "("; 155 String values = "(";
154 - 156 + Method[] methods = object.getClass().getMethods();
155 for(Field field:fields) 157 for(Field field:fields)
156 { 158 {
157 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
158 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 159 + if(!haveGetMethod(methods,field))
159 { 160 {
160 continue; 161 continue;
161 } 162 }
@@ -214,6 +215,7 @@ public class PublicSQL { @@ -214,6 +215,7 @@ public class PublicSQL {
214 String sql = "update "; 215 String sql = "update ";
215 sql += tableName; 216 sql += tableName;
216 Field[] fields = object.getClass().getDeclaredFields(); 217 Field[] fields = object.getClass().getDeclaredFields();
  218 + Method[] methods = object.getClass().getMethods();
217 if(null != fields && fields.length !=0 ) 219 if(null != fields && fields.length !=0 )
218 { 220 {
219 sql += " set "; 221 sql += " set ";
@@ -221,8 +223,7 @@ public class PublicSQL { @@ -221,8 +223,7 @@ public class PublicSQL {
221 for(int i=0;i<fields.length;i++) 223 for(int i=0;i<fields.length;i++)
222 { 224 {
223 Field field = fields[i]; 225 Field field = fields[i];
224 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
225 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 226 + if(!haveGetMethod(methods,field))
226 { 227 {
227 continue; 228 continue;
228 } 229 }
@@ -416,12 +417,12 @@ public class PublicSQL { @@ -416,12 +417,12 @@ public class PublicSQL {
416 String like = ""; 417 String like = "";
417 418
418 Field[] fields = object.getClass().getDeclaredFields(); 419 Field[] fields = object.getClass().getDeclaredFields();
  420 + Method[] methods = object.getClass().getMethods();
419 if(null != fields && fields.length !=0 ) 421 if(null != fields && fields.length !=0 )
420 { 422 {
421 for(Field field:fields) 423 for(Field field:fields)
422 { 424 {
423 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
424 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 425 + if(!haveGetMethod(methods,field))
425 { 426 {
426 continue; 427 continue;
427 } 428 }
@@ -523,14 +524,14 @@ public class PublicSQL { @@ -523,14 +524,14 @@ public class PublicSQL {
523 String where = " where 1=1 "; 524 String where = " where 1=1 ";
524 String like = ""; 525 String like = "";
525 526
  527 + Method[] methods = object.getClass().getMethods();
526 Field[] fields = object.getClass().getDeclaredFields(); 528 Field[] fields = object.getClass().getDeclaredFields();
527 if(null != fields && fields.length !=0 ) 529 if(null != fields && fields.length !=0 )
528 { 530 {
529 for(int i=0;i<fields.length;i++) 531 for(int i=0;i<fields.length;i++)
530 { 532 {
531 Field field = fields[i]; 533 Field field = fields[i];
532 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
533 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 534 + if(!haveGetMethod(methods,field))
534 { 535 {
535 continue; 536 continue;
536 } 537 }
@@ -612,12 +613,12 @@ public class PublicSQL { @@ -612,12 +613,12 @@ public class PublicSQL {
612 String tableName = changTableNameFromObject(object); 613 String tableName = changTableNameFromObject(object);
613 sql += tableName + "("; 614 sql += tableName + "(";
614 Field[] fields = object.getClass().getDeclaredFields( ); 615 Field[] fields = object.getClass().getDeclaredFields( );
  616 + Method[] methods = object.getClass().getMethods( );
615 String values = "("; 617 String values = "(";
616 String update = ""; 618 String update = "";
617 for(Field field:fields) 619 for(Field field:fields)
618 {// 620 {//
619 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
620 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 621 + if(!haveGetMethod(methods,field))
621 { 622 {
622 continue; 623 continue;
623 } 624 }
@@ -676,6 +677,7 @@ public class PublicSQL { @@ -676,6 +677,7 @@ public class PublicSQL {
676 Object object = objectlist.get(i); 677 Object object = objectlist.get(i);
677 678
678 Field[] fields = object.getClass().getDeclaredFields( ); 679 Field[] fields = object.getClass().getDeclaredFields( );
  680 + Method[] methods = object.getClass().getMethods( );
679 if(i==0) 681 if(i==0)
680 { 682 {
681 String tableName = changTableNameFromObject(object); 683 String tableName = changTableNameFromObject(object);
@@ -683,8 +685,7 @@ public class PublicSQL { @@ -683,8 +685,7 @@ public class PublicSQL {
683 sb.append("("); 685 sb.append("(");
684 for(Field field:fields) 686 for(Field field:fields)
685 { 687 {
686 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
687 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 688 + if(!haveGetMethod(methods,field))
688 { 689 {
689 continue; 690 continue;
690 } 691 }
@@ -706,8 +707,7 @@ public class PublicSQL { @@ -706,8 +707,7 @@ public class PublicSQL {
706 Field field = fields[j]; 707 Field field = fields[j];
707 Method method; 708 Method method;
708 try { 709 try {
709 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
710 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 710 + if(!haveGetMethod(methods,field))
711 { 711 {
712 continue; 712 continue;
713 } 713 }
@@ -784,10 +784,10 @@ public class PublicSQL { @@ -784,10 +784,10 @@ public class PublicSQL {
784 { 784 {
785 String select = ""; 785 String select = "";
786 Field[] fields = clas.getDeclaredFields(); 786 Field[] fields = clas.getDeclaredFields();
  787 + Method[] methods = clas.getMethods();
787 for(Field field:fields) 788 for(Field field:fields)
788 { 789 {
789 - PublicSQLConfig publicSQLConfig = field.getAnnotation(PublicSQLConfig.class);  
790 - if(null != publicSQLConfig && !publicSQLConfig.isSelect()) 790 + if(!haveGetMethod(methods,field))
791 { 791 {
792 continue; 792 continue;
793 } 793 }
@@ -813,23 +813,28 @@ public class PublicSQL { @@ -813,23 +813,28 @@ public class PublicSQL {
813 stringBuffer.append("`"); 813 stringBuffer.append("`");
814 stringBuffer.append(tableName); 814 stringBuffer.append(tableName);
815 stringBuffer.append("`"); 815 stringBuffer.append("`");
  816 +
  817 + StringBuffer orderbyStringBuffer = new StringBuffer();
  818 +
  819 + StringBuffer whereStringBuffer = new StringBuffer();
816 if(t instanceof BaseEntity) 820 if(t instanceof BaseEntity)
817 { 821 {
818 -  
819 BaseEntity baseEntity = (BaseEntity) t; 822 BaseEntity baseEntity = (BaseEntity) t;
820 Map<String, Object[]> timeMap = baseEntity.getTimeMap(); 823 Map<String, Object[]> timeMap = baseEntity.getTimeMap();
821 String[] keyValues = baseEntity.getKeyValue(); 824 String[] keyValues = baseEntity.getKeyValue();
822 Map<String, QueryType> params = baseEntity.getParams(); 825 Map<String, QueryType> params = baseEntity.getParams();
823 826
  827 + String orderBy = baseEntity.getOrderBy();
  828 +
824 if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(timeMap)) //时间条件 829 if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(timeMap)) //时间条件
825 { 830 {
826 for (String time:timeMap.keySet()) 831 for (String time:timeMap.keySet())
827 { 832 {
828 - stringBuffer.append("`"+time+"`");  
829 - stringBuffer.append(">=");  
830 - stringBuffer.append(timeMap.get(time)[0]);  
831 -// andcriteria.andGreaterThanOrEqualTo(time, timeMap.get(time)[0]) // 开始时间  
832 -// .andLessThan(time, timeMap.get(time)[1]); // 结束时间 833 + whereStringBuffer.append(" AND ");
  834 + whereStringBuffer.append(setObject(time,QueryType.GTE,timeMap.get(time)[0]));// 开始时间
  835 + whereStringBuffer.append(" AND ");
  836 + whereStringBuffer.append(setObject(time,QueryType.LTE,timeMap.get(time)[1]));// 结束时间
  837 +
833 } 838 }
834 } 839 }
835 840
@@ -846,30 +851,8 @@ public class PublicSQL { @@ -846,30 +851,8 @@ public class PublicSQL {
846 if(com.zhonglai.luhui.util.StringUtils.isNotNull(value)) 851 if(com.zhonglai.luhui.util.StringUtils.isNotNull(value))
847 { 852 {
848 QueryType queryType = params.get(key); 853 QueryType queryType = params.get(key);
849 - switch (queryType)  
850 - {  
851 -// case EQ:  
852 -// andcriteria.andEqualTo(key,value); //等于  
853 -// break;  
854 -// case NE:  
855 -// andcriteria.andNotEqualTo(key,value); //不等于  
856 -// break;  
857 -// case GT:  
858 -// andcriteria.andGreaterThan(key,value); //大于  
859 -// break;  
860 -// case GTE:  
861 -// andcriteria.andGreaterThanOrEqualTo(key,value); //大于等于  
862 -// break;  
863 -// case LT:  
864 -// andcriteria.andLessThan(key,value); //小于  
865 -// break;  
866 -// case LTE:  
867 -// andcriteria.andLessThanOrEqualTo(key,value); //小于等于  
868 -// break;  
869 -// case LIKE:  
870 -// andcriteria.andLike(key,value+""); //模糊查询  
871 -// break;  
872 - } 854 + whereStringBuffer.append(" AND ");
  855 + whereStringBuffer.append(setObject(key,queryType,value));
873 } 856 }
874 } catch (NoSuchMethodException e) { 857 } catch (NoSuchMethodException e) {
875 throw new RuntimeException(e); 858 throw new RuntimeException(e);
@@ -885,16 +868,122 @@ public class PublicSQL { @@ -885,16 +868,122 @@ public class PublicSQL {
885 868
886 if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(keyValues)) //模糊匹配添加 869 if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(keyValues)) //模糊匹配添加
887 { 870 {
888 - Example.Criteria orcriteria = example.createCriteria();  
889 - 871 + StringBuffer likeString = new StringBuffer();
890 String value = keyValues[0]; 872 String value = keyValues[0];
891 String[] keys = keyValues[1].split(","); 873 String[] keys = keyValues[1].split(",");
892 for(String key:keys) 874 for(String key:keys)
893 { 875 {
894 - orcriteria.orLike(key, "%" + value + "%"); 876 + likeString.append(" OR ");
  877 + likeString.append(setObject(key,QueryType.LIKE,value));
  878 +
895 } 879 }
896 - example.and(orcriteria); 880 + if(likeString.length() >0)
  881 + {
  882 + whereStringBuffer.append(" AND (");
  883 + whereStringBuffer.append(likeString.substring(3));
  884 + whereStringBuffer.append(")");
  885 + }
  886 +
  887 + }
  888 +
  889 + if(com.zhonglai.luhui.util.StringUtils.isNotEmpty(orderBy)) //排序
  890 + {
  891 + orderbyStringBuffer.append(" ORDER BY ");
  892 + orderbyStringBuffer.append(orderBy);
  893 + }
  894 + }
  895 +
  896 + getValuseWhere(t,whereStringBuffer); //不带条件的有值参数
  897 +
  898 + if(whereStringBuffer.length()>0)
  899 + {
  900 + stringBuffer.append(" WHERE ").append(whereStringBuffer.substring(4));
  901 + }
  902 +
  903 + if(orderbyStringBuffer.length()>0)
  904 + {
  905 + stringBuffer.append(orderbyStringBuffer);
  906 + }
  907 +
  908 + return stringBuffer.toString();
  909 + }
  910 +
  911 + private String setObject(String key,QueryType queryType,Object o)
  912 + {
  913 + String dengshi = "=";
  914 + String yingyong = "'{}'";
  915 + switch (queryType)
  916 + {
  917 + case EQ:
  918 + dengshi = " = ";
  919 + break;
  920 + case NE:
  921 + dengshi = " != ";
  922 + break;
  923 + case GT:
  924 + dengshi = " > ";
  925 + break;
  926 + case GTE:
  927 + dengshi = " >= ";
  928 + break;
  929 + case LT:
  930 + dengshi = " < ";
  931 + break;
  932 + case LTE:
  933 + dengshi = " <= ";
  934 + break;
  935 + case LIKE:
  936 + dengshi = " like ";
  937 + yingyong = "'%{}%'";
  938 + break;
  939 + }
  940 +
  941 + if(o instanceof Number)
  942 + {
  943 + yingyong = "{}";
  944 + }else if(o instanceof Date)
  945 + {
  946 + yingyong = "'"+DateUtils.parseDateToStr(DateUtils.getTime(), (Date) o)+"'";
  947 + }
  948 +
  949 + return " `"+Sqlutil.toUnderScoreCase(key)+"`"+dengshi+ com.zhonglai.luhui.util.StringUtils.format(yingyong,o) +" ";
  950 + }
  951 +
  952 + private <T> void getValuseWhere(T t,StringBuffer stringBuffer)
  953 + {
  954 +
  955 + Class clas = t.getClass();
  956 + Field[] fields = clas.getDeclaredFields(); //获取所有属性
  957 +
  958 + Method[] methods = clas.getMethods(); //获取所有方法
  959 +
  960 + for (Field field:fields)
  961 + {
  962 + field.setAccessible(true);
  963 + try {
  964 + Object value = field.get(t);
  965 + if(null != value && haveGetMethod(methods,field))
  966 + {
  967 + stringBuffer.append(" AND ");
  968 + stringBuffer.append(setObject(field.getName(),QueryType.EQ,value));
  969 + }
  970 + } catch (IllegalAccessException e) {
  971 + e.printStackTrace();
  972 + }
  973 +
  974 + }
  975 +
  976 + }
  977 +
  978 + private boolean haveGetMethod(Method[] methods,Field field)
  979 + {
  980 + for (Method method:methods) //如何没有get方法就过滤掉
  981 + {
  982 + if(method.getName().equals("get"+ org.apache.commons.lang3.StringUtils.capitalize(field.getName())))
  983 + {
  984 + return true;
897 } 985 }
898 } 986 }
  987 + return false;
899 } 988 }
900 } 989 }
@@ -63,7 +63,7 @@ public interface PublicMapper { @@ -63,7 +63,7 @@ public interface PublicMapper {
63 * @return 63 * @return
64 */ 64 */
65 @SelectProvider(type = PublicSQL.class, method = "getObject") 65 @SelectProvider(type = PublicSQL.class, method = "getObject")
66 - <T> T getObject(@Param("class") Class<T> clas, @Param("idName") String idName, @Param("values") String values); 66 + Map<String,Object> getObject(@Param("class") Class<?> clas, @Param("idName") String idName, @Param("values") String values);
67 67
68 @SelectProvider(type = PublicSQL.class, method = "selectCountBySql") 68 @SelectProvider(type = PublicSQL.class, method = "selectCountBySql")
69 Long selectCountBySql(@Param("sql") String sql); 69 Long selectCountBySql(@Param("sql") String sql);
@@ -154,6 +154,6 @@ public interface PublicMapper { @@ -154,6 +154,6 @@ public interface PublicMapper {
154 int insertIntoBySql(@Param("sql") String sql); 154 int insertIntoBySql(@Param("sql") String sql);
155 155
156 @SelectProvider(type = PublicSQL.class, method = "selectTList") 156 @SelectProvider(type = PublicSQL.class, method = "selectTList")
157 - public <T> List<T> selectTList(T t); 157 + List<Map<String,Object>> selectTList(Object t);
158 158
159 } 159 }
1 -//package com.zhonglai.luhui.dao.mapper;  
2 -//  
3 -//import org.springframework.stereotype.Component;  
4 -//import tk.mybatis.mapper.common.Mapper;  
5 -//  
6 -//  
7 -//@org.apache.ibatis.annotations.Mapper  
8 -//public interface PublicTemplateMapper<T> extends Mapper<T> {  
9 -//}  
@@ -2,20 +2,20 @@ package com.zhonglai.luhui.dao.service; @@ -2,20 +2,20 @@ package com.zhonglai.luhui.dao.service;
2 2
3 import java.util.List; 3 import java.util.List;
4 4
5 -public interface PublicTemplateService<T> { 5 +public interface PublicTemplateService{
6 /** 6 /**
7 * 查询表 7 * 查询表
8 * 8 *
9 * @return 表 9 * @return 表
10 */ 10 */
11 - public List<T> selectTList(T t); 11 + <T> List<T> selectTList(T t);
12 12
13 13
14 - public T getTById(Object id,Class<T> clas); 14 + <T> T getTById(Object id,Class<T> clas);
15 15
16 - public int add(T t); 16 + int add(Object t);
17 17
18 - public int edit(T t); 18 + int edit(Object t);
19 19
20 - public int removeByIds(Class<T> clas,Object... id); 20 + int removeByIds(Class<?> clas,Object... id);
21 } 21 }
1 package com.zhonglai.luhui.dao.service.impl; 1 package com.zhonglai.luhui.dao.service.impl;
2 2
  3 +import cn.hutool.core.bean.BeanUtil;
3 import com.zhonglai.luhui.dao.mapper.PublicMapper; 4 import com.zhonglai.luhui.dao.mapper.PublicMapper;
4 import com.zhonglai.luhui.dao.service.PublicService; 5 import com.zhonglai.luhui.dao.service.PublicService;
5 import com.zhonglai.luhui.util.bean.MapToObjectConverter; 6 import com.zhonglai.luhui.util.bean.MapToObjectConverter;
@@ -91,7 +92,12 @@ public class PublicServiceImpl implements PublicService { @@ -91,7 +92,12 @@ public class PublicServiceImpl implements PublicService {
91 */ 92 */
92 public <T> T getObject(Class<T> clas, String idName, String values) 93 public <T> T getObject(Class<T> clas, String idName, String values)
93 { 94 {
94 - return publicMapper.getObject(clas,idName,values); 95 + Object object = publicMapper.getObject(clas,idName,values);
  96 + if(null == object)
  97 + {
  98 + return null;
  99 + }
  100 + return BeanUtil.toBean(object,clas);
95 } 101 }
96 102
97 /** 103 /**
1 -//package com.zhonglai.luhui.dao.service.impl;  
2 -//  
3 -//import com.zhonglai.luhui.dao.mapper.PublicTemplateMapper;  
4 -//import com.zhonglai.luhui.dao.service.PublicTemplateService;  
5 -//import com.zhonglai.luhui.util.StringUtils;  
6 -//import com.zhonglai.luhui.util.sql.BaseEntity;  
7 -//import com.zhonglai.luhui.util.sql.QueryType;  
8 -//import org.springframework.beans.factory.annotation.Autowired;  
9 -//import org.springframework.stereotype.Service;  
10 -//import tk.mybatis.mapper.common.Mapper;  
11 -//import tk.mybatis.mapper.entity.Example;  
12 -//  
13 -//import java.lang.reflect.InvocationTargetException;  
14 -//import java.lang.reflect.Method;  
15 -//import java.util.Arrays;  
16 -//import java.util.List;  
17 -//import java.util.Map;  
18 -//  
19 -///**  
20 -// * 公共模板服务  
21 -// */  
22 -//@Service  
23 -//public class PublicTemplateServiceImpl<T> implements PublicTemplateService<T> {  
24 -// @Autowired  
25 -// private PublicTemplateMapper<T> publicTemplateMapper;  
26 -//  
27 -// @Override  
28 -// public List<T> selectTList(T t) {  
29 -// Example example = new Example(t.getClass());  
30 -// Example.Criteria andcriteria = example.createCriteria();  
31 -//  
32 -// if(t instanceof BaseEntity)  
33 -// {  
34 -// BaseEntity baseEntity = (BaseEntity) t;  
35 -// Map<String, Object[]> timeMap = baseEntity.getTimeMap();  
36 -// String[] keyValues = baseEntity.getKeyValue();  
37 -// Map<String, QueryType> params = baseEntity.getParams();  
38 -//  
39 -// if(StringUtils.isNotEmpty(timeMap)) //时间条件  
40 -// {  
41 -// for (String time:timeMap.keySet())  
42 -// {  
43 -// andcriteria.andGreaterThanOrEqualTo(time, timeMap.get(time)[0]) // 开始时间  
44 -// .andLessThan(time, timeMap.get(time)[1]); // 结束时间  
45 -// }  
46 -// }  
47 -//  
48 -//  
49 -// if(StringUtils.isNotEmpty(params)) //自定义条件  
50 -// {  
51 -// Class clas = t.getClass();  
52 -// for (String key:params.keySet())  
53 -// {  
54 -// String getterMethodName = "get"+ org.apache.commons.lang3.StringUtils.capitalize(key);  
55 -// try {  
56 -// Method method = clas.getMethod(getterMethodName);  
57 -// Object value = method.invoke(t);  
58 -// if(StringUtils.isNotNull(value))  
59 -// {  
60 -// QueryType queryType = params.get(key);  
61 -// switch (queryType)  
62 -// {  
63 -// case EQ:  
64 -// andcriteria.andEqualTo(key,value); //等于  
65 -// break;  
66 -// case NE:  
67 -// andcriteria.andNotEqualTo(key,value); //不等于  
68 -// break;  
69 -// case GT:  
70 -// andcriteria.andGreaterThan(key,value); //大于  
71 -// break;  
72 -// case GTE:  
73 -// andcriteria.andGreaterThanOrEqualTo(key,value); //大于等于  
74 -// break;  
75 -// case LT:  
76 -// andcriteria.andLessThan(key,value); //小于  
77 -// break;  
78 -// case LTE:  
79 -// andcriteria.andLessThanOrEqualTo(key,value); //小于等于  
80 -// break;  
81 -// case LIKE:  
82 -// andcriteria.andLike(key,value+""); //模糊查询  
83 -// break;  
84 -// }  
85 -// }  
86 -// } catch (NoSuchMethodException e) {  
87 -// throw new RuntimeException(e);  
88 -// } catch (InvocationTargetException e) {  
89 -// throw new RuntimeException(e);  
90 -// } catch (IllegalAccessException e) {  
91 -// throw new RuntimeException(e);  
92 -// }  
93 -//  
94 -//  
95 -// }  
96 -// }  
97 -//  
98 -// if(StringUtils.isNotEmpty(keyValues)) //模糊匹配添加  
99 -// {  
100 -// Example.Criteria orcriteria = example.createCriteria();  
101 -//  
102 -// String value = keyValues[0];  
103 -// String[] keys = keyValues[1].split(",");  
104 -// for(String key:keys)  
105 -// {  
106 -// orcriteria.orLike(key, "%" + value + "%");  
107 -// }  
108 -// example.and(orcriteria);  
109 -// }  
110 -// }  
111 -//  
112 -// List<T> list = publicTemplateMapper.selectByExample(example);  
113 -// return list;  
114 -// }  
115 -//  
116 -// @Override  
117 -// public T getTById(Object id,Class<T> clas) {  
118 -// Example example = new Example(clas);  
119 -// Example.Criteria criteria = example.createCriteria();  
120 -// criteria.andEqualTo("id", id);  
121 -// return (T) publicTemplateMapper.selectOneByExample(criteria);  
122 -// }  
123 -//  
124 -// @Override  
125 -// public int add(T t) {  
126 -// return publicTemplateMapper.insert(t);  
127 -// }  
128 -//  
129 -// @Override  
130 -// public int edit(T t) {  
131 -// return publicTemplateMapper.updateByPrimaryKey(t);  
132 -// }  
133 -//  
134 -// @Override  
135 -// public int removeByIds(Class<T> clas, Object... ids) {  
136 -// Example example = new Example(clas);  
137 -// Example.Criteria criteria = example.createCriteria();  
138 -// criteria.andIn("id", Arrays.asList(ids));  
139 -// return publicTemplateMapper.deleteByExample(example);  
140 -// }  
141 -//  
142 -//  
143 -//} 1 +package com.zhonglai.luhui.dao.service.impl;
  2 +
  3 +import cn.hutool.core.bean.BeanUtil;
  4 +import com.zhonglai.luhui.dao.mapper.PublicMapper;
  5 +import com.zhonglai.luhui.dao.service.PublicTemplateService;
  6 +import com.zhonglai.luhui.util.bean.MapToObjectConverter;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +import java.util.ArrayList;
  11 +import java.util.List;
  12 +import java.util.Map;
  13 +
  14 +/**
  15 + * 公共模板服务
  16 + */
  17 +@Service
  18 +public class PublicTemplateServiceImpl implements PublicTemplateService {
  19 + @Autowired
  20 + private PublicMapper publicMapper;
  21 +
  22 + @Override
  23 + public <T> List<T> selectTList(T t) {
  24 + List<Map<String,Object>> list = publicMapper.selectTList(t);
  25 +
  26 + List<T> rList = null;
  27 + if(null != list && list.size() != 0)
  28 + {
  29 + rList = new ArrayList<T>();
  30 + for (Map<String,Object> map:list)
  31 + {
  32 + T at = null;
  33 + try {
  34 + at = (T) MapToObjectConverter.convert(map,t.getClass());
  35 + } catch (IllegalAccessException e) {
  36 + e.printStackTrace();
  37 + } catch (InstantiationException e) {
  38 + e.printStackTrace();
  39 + }
  40 + rList.add(at);
  41 + }
  42 + }
  43 + return rList;
  44 + }
  45 +
  46 + @Override
  47 + public <T> T getTById(Object id,Class<T> clas) {
  48 + Map<String,Object> object = publicMapper.getObject(clas,"id", String.valueOf(id));
  49 + if(null != object)
  50 + {
  51 + try {
  52 + return MapToObjectConverter.convert(object,clas);
  53 + } catch (IllegalAccessException e) {
  54 + e.printStackTrace();
  55 + } catch (InstantiationException e) {
  56 + e.printStackTrace();
  57 + }
  58 +
  59 + }
  60 + return null;
  61 + }
  62 +
  63 + @Override
  64 + public int add(Object t) {
  65 + return publicMapper.insert(t);
  66 + }
  67 +
  68 + @Override
  69 + public int edit(Object t) {
  70 + return publicMapper.updateObject(t,"id");
  71 + }
  72 +
  73 + @Override
  74 + public int removeByIds(Class<?> clas, Object... ids) {
  75 + int i = 0;
  76 + for (Object o:ids)
  77 + {
  78 + i+=publicMapper.deleteObjectById(clas,o+"");
  79 + }
  80 + return i;
  81 + }
  82 +
  83 +
  84 +}
@@ -39,11 +39,6 @@ @@ -39,11 +39,6 @@
39 </exclusions> 39 </exclusions>
40 </dependency> 40 </dependency>
41 41
42 -<!-- <dependency>-->  
43 -<!-- <groupId>tk.mybatis</groupId>-->  
44 -<!-- <artifactId>mapper-spring-boot-starter</artifactId>-->  
45 -<!-- </dependency>-->  
46 -  
47 <dependency> 42 <dependency>
48 <groupId>org.mybatis.spring.boot</groupId> 43 <groupId>org.mybatis.spring.boot</groupId>
49 <artifactId>mybatis-spring-boot-starter</artifactId> 44 <artifactId>mybatis-spring-boot-starter</artifactId>
@@ -2,7 +2,6 @@ package com.zhonglai.luhui.springboot.druid.config; @@ -2,7 +2,6 @@ package com.zhonglai.luhui.springboot.druid.config;
2 2
3 import org.springframework.context.annotation.Configuration; 3 import org.springframework.context.annotation.Configuration;
4 import org.springframework.context.annotation.EnableAspectJAutoProxy; 4 import org.springframework.context.annotation.EnableAspectJAutoProxy;
5 -import tk.mybatis.spring.annotation.MapperScan;  
6 5
7 /** 6 /**
8 * 程序注解配置 7 * 程序注解配置
1 package com.zhonglai.luhui.admin.controller.cb; 1 package com.zhonglai.luhui.admin.controller.cb;
2 2
3 import java.util.List; 3 import java.util.List;
4 -import javax.servlet.http.HttpServletResponse;  
5 4
6 import com.zhonglai.luhui.dao.service.PublicService; 5 import com.zhonglai.luhui.dao.service.PublicService;
7 import com.zhonglai.luhui.dao.service.PublicTemplateService; 6 import com.zhonglai.luhui.dao.service.PublicTemplateService;
@@ -35,12 +34,22 @@ import com.zhonglai.luhui.sprngboot.common.core.page.TableDataInfo; @@ -35,12 +34,22 @@ import com.zhonglai.luhui.sprngboot.common.core.page.TableDataInfo;
35 public class CbBoldClosingCostController extends BaseController 34 public class CbBoldClosingCostController extends BaseController
36 { 35 {
37 @Autowired 36 @Autowired
38 - private PublicTemplateService<CbBoldClosingCost> publicTemplateService; 37 + private PublicTemplateService publicTemplateService;
39 38
40 /** 39 /**
41 * 查询标粗结转成本表列表 40 * 查询标粗结转成本表列表
42 */ 41 */
43 - @ApiOperation("查询标粗结转成本表列表") 42 + @ApiOperation(value = "查询标粗结转成本表列表",notes="\n" +
  43 + "公共参数描述:\n" +
  44 + "条件参数:\n" +
  45 + "timeMap; //时间条件(如:{\"create_time\":[开始时间,结束时间]})\n" +
  46 + "keyValue; //模糊匹配的关键字(如:[\"value\",\"name,no\"])\n" +
  47 + "params; //字段对应的比较符号(如:{\"id\":\"EQ\"})\n" +
  48 + "orderBy; //排序(如:\"id desc,name asc\")\n" +
  49 + "\n" +
  50 + "分页参数:\n" +
  51 + "pageNum; //当前记录起始索引,从1开始\n" +
  52 + "pageSize; //每页显示记录数")
44 @GetMapping("/list") 53 @GetMapping("/list")
45 public TableDataInfo list(CbBoldClosingCost cbBoldClosingCost) 54 public TableDataInfo list(CbBoldClosingCost cbBoldClosingCost)
46 { 55 {
@@ -92,4 +101,5 @@ public class CbBoldClosingCostController extends BaseController @@ -92,4 +101,5 @@ public class CbBoldClosingCostController extends BaseController
92 { 101 {
93 return toAjax(publicTemplateService.removeByIds(CbBoldClosingCost.class,ids)); 102 return toAjax(publicTemplateService.removeByIds(CbBoldClosingCost.class,ids));
94 } 103 }
  104 +
95 } 105 }
@@ -3,6 +3,7 @@ package ${packageName}.${projectName}.controller.${moduleName}; @@ -3,6 +3,7 @@ package ${packageName}.${projectName}.controller.${moduleName};
3 import java.util.List; 3 import java.util.List;
4 import javax.servlet.http.HttpServletResponse; 4 import javax.servlet.http.HttpServletResponse;
5 5
  6 +import com.zhonglai.luhui.dao.service.PublicTemplateService;
6 import io.swagger.annotations.Api; 7 import io.swagger.annotations.Api;
7 import io.swagger.annotations.ApiOperation; 8 import io.swagger.annotations.ApiOperation;
8 ##import org.springframework.security.access.prepost.PreAuthorize; 9 ##import org.springframework.security.access.prepost.PreAuthorize;
@@ -39,19 +40,29 @@ import com.zhonglai.luhui.sprngboot.common.core.page.TableDataInfo; @@ -39,19 +40,29 @@ import com.zhonglai.luhui.sprngboot.common.core.page.TableDataInfo;
39 public class ${ClassName}Controller extends BaseController 40 public class ${ClassName}Controller extends BaseController
40 { 41 {
41 @Autowired 42 @Autowired
42 - private I${ClassName}Service ${className}Service; 43 + private PublicTemplateService publicTemplateService;
43 44
44 /** 45 /**
45 * 查询${functionName}列表 46 * 查询${functionName}列表
46 */ 47 */
47 - @ApiOperation("查询${functionName}列表") 48 + @ApiOperation(value ="查询${functionName}列表",notes="\n" +
  49 + "公共参数描述:\n" +
  50 + "条件参数:\n" +
  51 + "timeMap; //时间条件(如:{\"create_time\":[开始时间,结束时间]})\n" +
  52 + "keyValue; //模糊匹配的关键字(如:[\"value\",\"name,no\"])\n" +
  53 + "params; //字段对应的比较符号(如:{\"id\":\"EQ\"})\n" +
  54 + "orderBy; //排序(如:\"id desc,name asc\")\n" +
  55 + "\n" +
  56 + "分页参数:\n" +
  57 + "pageNum; //当前记录起始索引,从1开始\n" +
  58 + "pageSize; //每页显示记录数")
48 ## @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") 59 ## @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
49 @GetMapping("/list") 60 @GetMapping("/list")
50 #if($table.crud || $table.sub) 61 #if($table.crud || $table.sub)
51 public TableDataInfo list(${ClassName} ${className}) 62 public TableDataInfo list(${ClassName} ${className})
52 { 63 {
53 startPage(); 64 startPage();
54 - List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); 65 + List<${ClassName}> list = publicTemplateService.selectTList(${className});
55 return getDataTable(list); 66 return getDataTable(list);
56 } 67 }
57 #elseif($table.tree) 68 #elseif($table.tree)
@@ -84,7 +95,7 @@ public class ${ClassName}Controller extends BaseController @@ -84,7 +95,7 @@ public class ${ClassName}Controller extends BaseController
84 @GetMapping(value = "/{${pkColumn.javaField}}") 95 @GetMapping(value = "/{${pkColumn.javaField}}")
85 public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) 96 public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField})
86 { 97 {
87 - return AjaxResult.success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); 98 + return AjaxResult.success(publicTemplateService.getTById(${pkColumn.javaField},${ClassName}.class));
88 } 99 }
89 100
90 /** 101 /**
@@ -96,7 +107,7 @@ public class ${ClassName}Controller extends BaseController @@ -96,7 +107,7 @@ public class ${ClassName}Controller extends BaseController
96 @PostMapping 107 @PostMapping
97 public AjaxResult add(@RequestBody ${ClassName} ${className}) 108 public AjaxResult add(@RequestBody ${ClassName} ${className})
98 { 109 {
99 - return toAjax(${className}Service.insert${ClassName}(${className})); 110 + return toAjax(publicTemplateService.add(${className}));
100 } 111 }
101 112
102 /** 113 /**
@@ -108,7 +119,7 @@ public class ${ClassName}Controller extends BaseController @@ -108,7 +119,7 @@ public class ${ClassName}Controller extends BaseController
108 @PutMapping 119 @PutMapping
109 public AjaxResult edit(@RequestBody ${ClassName} ${className}) 120 public AjaxResult edit(@RequestBody ${ClassName} ${className})
110 { 121 {
111 - return toAjax(${className}Service.update${ClassName}(${className})); 122 + return toAjax(publicTemplateService.edit(${className}));
112 } 123 }
113 124
114 /** 125 /**
@@ -120,6 +131,6 @@ public class ${ClassName}Controller extends BaseController @@ -120,6 +131,6 @@ public class ${ClassName}Controller extends BaseController
120 @DeleteMapping("/{${pkColumn.javaField}s}") 131 @DeleteMapping("/{${pkColumn.javaField}s}")
121 public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) 132 public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s)
122 { 133 {
123 - return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); 134 + return toAjax(publicTemplateService.removeByIds(${pkColumn.javaField}s));
124 } 135 }
125 } 136 }
@@ -162,19 +162,6 @@ @@ -162,19 +162,6 @@
162 </dependency> 162 </dependency>
163 163
164 164
165 -  
166 - <dependency>  
167 - <groupId>tk.mybatis</groupId>  
168 - <artifactId>mapper</artifactId>  
169 - <!-- 建议使用最新版本,最新版本请从项目首页查找 -->  
170 - <version>${tkmapper.version}</version>  
171 - </dependency>  
172 - <dependency>  
173 - <groupId>tk.mybatis</groupId>  
174 - <artifactId>mapper-spring-boot-starter</artifactId>  
175 - <version>${tkmapper.version}</version>  
176 - </dependency>  
177 -  
178 <dependency> 165 <dependency>
179 <groupId>org.mybatis.spring.boot</groupId> 166 <groupId>org.mybatis.spring.boot</groupId>
180 <artifactId>mybatis-spring-boot-starter</artifactId> 167 <artifactId>mybatis-spring-boot-starter</artifactId>