diff --git a/demo/pom.xml b/demo/pom.xml index d706fc4a64472e85145cdcab439d2b26a67f2482..2b58080f1bc0937e2088b58afa2635e3aa1bad6b 100644 --- a/demo/pom.xml +++ b/demo/pom.xml @@ -33,5 +33,10 @@ org.freemarker freemarker + + com.github.fengyuchenglun + kim-boot-util + 1.0.13 + \ No newline at end of file diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/CodeGenerator.java b/demo/src/main/java/com/duanledexianxianxian/demo/CodeGenerator.java deleted file mode 100644 index f4b222cf027fc7e234dacc5f92ea61d6f88ac298..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/CodeGenerator.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.duanledexianxianxian.demo; - -import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException; -import com.baomidou.mybatisplus.core.toolkit.StringPool; -import com.baomidou.mybatisplus.core.toolkit.StringUtils; -import com.baomidou.mybatisplus.generator.AutoGenerator; -import com.baomidou.mybatisplus.generator.InjectionConfig; -import com.baomidou.mybatisplus.generator.config.*; -import com.baomidou.mybatisplus.generator.config.po.TableInfo; -import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; -import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; - -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -/** - * 代码生成器 - */ -public class CodeGenerator { - /** - * 读取控制台内容 - * - * @param tip the tip - * @return the string - */ - public static String scanner(String tip) { - Scanner scanner = new Scanner(System.in); - StringBuilder help = new StringBuilder(); - help.append("请输入" + tip + ":"); - System.out.println(help.toString()); - if (scanner.hasNext()) { - String ipt = scanner.next(); - if (StringUtils.isNotEmpty(ipt)) { - return ipt; - } - } - throw new MybatisPlusException("请输入正确的" + tip + "!"); - } - - /** - * The entry point of application. - * - * @param args the input arguments - */ - public static void main(String[] args) { - // 代码生成器 - AutoGenerator mpg = new AutoGenerator(); - - // 全局配置 - GlobalConfig gc = new GlobalConfig(); - // 项目路径 - String projectPath = "F:/@project@/@dianli@/springboot-demo/demo"; - gc.setOutputDir(projectPath + "/src/main/java"); - gc.setAuthor("duanledexianxianxian"); - gc.setOpen(false); - gc.setFileOverride(true); - gc.setBaseResultMap(true); - gc.setBaseColumnList(true); - // gc.setSwagger2(true); 实体属性 Swagger2 注解 - mpg.setGlobalConfig(gc); - - // 数据源配置 - DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://rm-bp1451sz2b7q8w95xvo.mysql.rds.aliyuncs.com:3306/convention?useUnicode=true&useSSL=false&characterEncoding=utf8"); - // dsc.setSchemaName("public"); - dsc.setDriverName("com.mysql.cj.jdbc.Driver"); - dsc.setUsername("convention"); - dsc.setPassword("Convention123"); - mpg.setDataSource(dsc); - - // 包配置 - PackageConfig pc = new PackageConfig(); - pc.setModuleName(scanner("模块名")); - pc.setParent("com.duanledexianxianxian.demo"); - mpg.setPackageInfo(pc); - - // 自定义配置 - InjectionConfig cfg = new InjectionConfig() { - @Override - public void initMap() { - // to do nothing - } - }; - - // 如果模板引擎是 freemarker - String templatePath = "/templates/mapper.xml.ftl"; - // 如果模板引擎是 velocity - // String templatePath = "/templates/mapper.xml.vm"; - - // 自定义输出配置 - List focList = new ArrayList<>(); - // 自定义配置会被优先输出 - focList.add(new FileOutConfig(templatePath) { - @Override - public String outputFile(TableInfo tableInfo) { - // 自定义输出文件名 , 如果你 Entity 设置了前后缀、此处注意 xml 的名称会跟着发生变化!! - return projectPath + "/src/main/resources/mapper/" + pc.getModuleName() - + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; - } - }); - - cfg.setFileOutConfigList(focList); - mpg.setCfg(cfg); - - // 配置模板 - TemplateConfig templateConfig = new TemplateConfig(); - - templateConfig.setXml(null); - mpg.setTemplate(templateConfig); - - // 策略配置 - StrategyConfig strategy = new StrategyConfig(); - strategy.setNaming(NamingStrategy.underline_to_camel); - strategy.setColumnNaming(NamingStrategy.underline_to_camel); -// strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!"); - strategy.setEntityLombokModel(true); - strategy.setRestControllerStyle(true); - // 公共父类 -// strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!"); - // 写于父类中的公共字段 -// strategy.setSuperEntityColumns("id"); - strategy.setInclude(scanner("表名,多个英文逗号分割").split(",")); - strategy.setControllerMappingHyphenStyle(true); - strategy.setTablePrefix(pc.getModuleName() + "_"); - mpg.setStrategy(strategy); - mpg.setTemplateEngine(new FreemarkerTemplateEngine()); - mpg.execute(); - } -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/common/util/BeanUtils.java b/demo/src/main/java/com/duanledexianxianxian/demo/common/util/BeanUtils.java deleted file mode 100644 index d043c9f7d7ff7aeed0963b178f80cd76a3c2aa9c..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/common/util/BeanUtils.java +++ /dev/null @@ -1,575 +0,0 @@ -package com.duanledexianxianxian.demo.common.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.BeansException; -import org.springframework.beans.FatalBeanException; -import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; - -import java.beans.PropertyDescriptor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.util.*; - - -/** - * BeanUtil提供一系列与bean相关的操作. - * - * @author duanledexianxianxian - * @date 2019-02-14 23:35:22 - */ -public class BeanUtils extends org.springframework.beans.BeanUtils { - - /** - * The constant logger. - */ - private static Logger logger = LoggerFactory.getLogger(BeanUtils.class); - /** - * The constant SERIAL_VERSION_UID. - */ - private static final String SERIAL_VERSION_UID = "serialVersionUID"; - - /** - * The constant COMPARE_TYPE_INTEGER. - */ - private static final String COMPARE_TYPE_INTEGER = "java.lang.Integer"; - /** - * The constant COMPARE_TYPE_STRING. - */ - private static final String COMPARE_TYPE_STRING = "java.lang.String"; - - - /** - * Copy properties. - * - * @param source the source - * @param target the target - * @throws BeansException the beans exception - */ - public static void copyProperties(Object source, Object target) throws BeansException { - copyProperties(source, target, null, (String[]) null); - } - - /** - * Copy properties. - * - * @param source the source - * @param target the target - * @param editable the editable - * @param ignoreProperties the ignore properties - * @throws BeansException the beans exception - */ - private static void copyProperties(Object source, Object target, Class editable, String... ignoreProperties) - throws BeansException { - - Assert.notNull(source, "Source must not be null"); - Assert.notNull(target, "Target must not be null"); - - Class actualEditable = target.getClass(); - if (editable != null) { - if (!editable.isInstance(target)) { - throw new IllegalArgumentException("Target class [" + target.getClass().getName() - + "] not assignable to Editable class [" + editable.getName() + "]"); - } - actualEditable = editable; - } - PropertyDescriptor[] targetPds = getPropertyDescriptors(actualEditable); - List ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null); - - for (PropertyDescriptor targetPd : targetPds) { - Method writeMethod = targetPd.getWriteMethod(); - boolean ignoreCondition = ignoreList == null || !ignoreList.contains(targetPd.getName()); - if (writeMethod != null && ignoreCondition) { - PropertyDescriptor sourcePd = getPropertyDescriptor(source.getClass(), targetPd.getName()); - if (sourcePd != null) { - Method readMethod = sourcePd.getReadMethod(); - boolean isAssignable = ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType()); - if (readMethod != null && isAssignable) { - try { - setReadMethod(readMethod); - Object value = readMethod.invoke(source); - // 这里判断以下value是否为空 当然这里也能进行一些特殊要求的处理 例如绑定时格式转换等等 - setWriteMethodMethod(value, writeMethod, target); - } catch (Throwable ex) { - throw new FatalBeanException( - "Could not copy property '" + targetPd.getName() + "' from source to target", ex); - } - } - } - } - } - } - - /** - * Sets read method. - * - * @param readMethod the read method - */ - private static void setReadMethod(Method readMethod) { - if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { - readMethod.setAccessible(true); - } - } - - /** - * Sets write method method. - * - * @param value the value - * @param writeMethod the write method - * @param target the target - * @throws Exception the exception - */ - private static void setWriteMethodMethod(Object value, Method writeMethod, Object target) throws Exception { - if (value != null) { - if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { - writeMethod.setAccessible(true); - } - writeMethod.invoke(target, value); - } - } - - - /** - * 复制对象. - * - * @param the type parameter - * @param entity the entity - * @param targetCls the target cls - * @return the t - */ - public static T copyObject(Object entity, Class targetCls) { - // 如果entity,直接返回null - if (entity == null) { - return null; - } - Object target = null; - try { - target = targetCls.newInstance(); - copyProperties(entity, target); - } catch (InstantiationException | IllegalAccessException e) { - logger.error("error:{}", e); - } - return (T) target; - } - - /** - * 复制对象 - * - * @param list the list - * @param targetCls the target cls - * @return list list - */ - public static List copyList(List list, Class targetCls) { - List resultList = new ArrayList(); - if (list != null && list.size() > 0) { - for (Object entity : list) { - resultList.add(copyObject(entity, targetCls)); - } - } - return resultList; - } - - - /** - * java反射bean的get方法 - * - * @param objectClass the object class - * @param fieldName the field name - * @return get method - */ - @SuppressWarnings("unchecked") - public static Method getGetMethod(Class objectClass, String fieldName) { - StringBuffer sb = new StringBuffer(); - sb.append("get"); - sb.append(fieldName.substring(0, 1).toUpperCase()); - sb.append(fieldName.substring(1)); - try { - return objectClass.getMethod(sb.toString()); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - logger.error("error:{}", e); - } - return null; - } - - - /** - * java反射bean的set方法 - * - * @param objectClass the object class - * @param fieldName the field name - * @return set method - */ - @SuppressWarnings("unchecked") - public static Method getSetMethod(Class objectClass, String fieldName) { - try { - Class[] parameterTypes = new Class[1]; - Field field = objectClass.getDeclaredField(fieldName); - parameterTypes[0] = field.getType(); - StringBuffer sb = new StringBuffer(); - sb.append("set"); - sb.append(fieldName.substring(0, 1).toUpperCase()); - sb.append(fieldName.substring(1)); - Method method = objectClass.getMethod(sb.toString(), parameterTypes); - return method; - } catch (Exception e) { - e.printStackTrace(); - logger.error("error:{}", e); - } - return null; - } - - - /** - * 执行set方法 - * - * @param o 执行对象 - * @param fieldName 属性 - * @param value 值 - */ - public static void invokeSet(Object o, String fieldName, Object value) { - Method method = getSetMethod(o.getClass(), fieldName); - try { - method.invoke(o, new Object[]{value}); - } catch (Exception e) { - e.printStackTrace(); - logger.error("error:{}", e); - } - } - - /** - * 这个函数主要用于将字符串和数字型分开 前台都是字符串 根据model类型转换 现在仅支持String int 不是这两个类型不做set函数
. - * - * @param o the o - * @param fieldName the field name - * @param value the value - */ - public static void invokeSetStringInt(Object o, String fieldName, String value) { - Method method = getGetMethod(o.getClass(), fieldName); - String type = method.getReturnType().getName(); - if (COMPARE_TYPE_INTEGER.equals(type)) { - invokeSet(o, fieldName, (value == null) ? null : Integer.parseInt(value)); - } else if (COMPARE_TYPE_STRING.equals(type)) { - invokeSet(o, fieldName, value); - } else { - logger.error("set 函数不能设置Sting和int以外的函数,设置类型:" + type + ",方法:" + method.getName()); - } - } - - /** - * 执行get方法 - * - * @param o 执行对象 - * @param fieldName 属性 - * @return the object - */ - public static Object invokeGet(Object o, String fieldName) { - Method method = getGetMethod(o.getClass(), fieldName); - try { - return method.invoke(o, new Object[0]); - } catch (Exception e) { - e.printStackTrace(); - logger.error("error:{}", e); - } - return null; - } - - - /** - * 将返回值包装成String 如果是空则仍然保持空. - * - * @param o the o - * @param fieldName the field name - * @return the string - */ - public static String invokeGetString(Object o, String fieldName) { - Object obj = invokeGet(o, fieldName); - return (obj == null) ? null : String.valueOf(obj); - } - - - /** - * Merger obj object. - * - * @param 项目域对象如果为空,则直接返回产品域对象项目域对象字段属性为空,则使用产品域覆盖项目域字段 - * @param parent 产品域对象 - * @param son 项目域对象 - * @param refClass class对象 - * @return the object - */ - public static Object mergerObj(T parent, T son, Class refClass) { - Object obj = null; - try { - obj = refClass.newInstance(); - if (parent == null) { - obj = son; - } else if (son == null) { - obj = parent; - } else { - for (Field field : refClass.getDeclaredFields()) { - String fieldName = field.getName(); - if (SERIAL_VERSION_UID.equalsIgnoreCase(fieldName)) { - continue; - } - Object value = invokeGet(son, fieldName); - if (value == null) { - value = invokeGet(parent, fieldName); - } - invokeSet(obj, fieldName, value); - } - } - } catch (Exception e) { - e.printStackTrace(); - logger.error("error:{}", e); - } - logger.debug("Page object:" + obj); - return obj; - } - - - /** - * Merger obj object. - * - * @param the type parameter - * @param parent the parent - * @param son the son - * @param refClassParent the ref class parent - * @param refClassSon the ref class son - * @return the object - */ - public static Object mergerObj(T parent, T son, Class refClassParent, Class refClassSon) { - return mergerObj(parent, son, refClassParent, refClassSon, null); - } - - - /** - * Merger obj object. - * - * @param 父对象为空,则直接返回子对象
- * 子对象为空,则将子对象域父对象相同的字段拷贝给obj
- * 父对象与子对象都不为空,现将子对象的值拷贝给obj,在将子对象与父对象相同的字段拷贝给obj
- * 例如:比如指标与业务视图字段合并,则指标为父对象、业务视图字段为子对象变量命名有问题
- * @param parent 父对象 - * @param son 子对象 - * @param refClassParent 父class对象 - * @param refClassSon 子class对象 - * @param prefix 前缀 - * @return the object - */ - public static Object mergerObj(T parent, T son, Class refClassParent, - Class refClassSon, String prefix) { - Map publicFieldMap = new HashMap<>(100); - Object obj = null; - try { - //比较父class对象与子class对象,找出字段相同的字段 - for (Field pField : refClassParent.getDeclaredFields()) { - for (Field sField : refClassSon.getDeclaredFields()) { - if (sField.getName().equals(pField.getName())) { - publicFieldMap.put(pField.getName(), sField.getName()); - break; - } else if (prefix != null && sField.getName().equals(prefix + pField.getName())) { - publicFieldMap.put(pField.getName(), sField.getName()); - break; - } - } - } - - obj = refClassSon.newInstance(); - //父对象为空,直接返回父对象给obj - if (parent == null) { - obj = son; - } else - //子对象为空,将父对象中与子对象中相同字段的值复制给obj - if (son == null) { - for (Map.Entry entry : publicFieldMap.entrySet()) { - if (SERIAL_VERSION_UID.equalsIgnoreCase(entry.getValue())) { - continue; - } - Object value = invokeGet(parent, entry.getValue()); - invokeSet(obj, entry.getValue(), value); - } - } else { - //先将子对象拷贝给obj - for (Field field : refClassSon.getDeclaredFields()) { - if (SERIAL_VERSION_UID.equalsIgnoreCase(field.getName())) { - continue; - } - Object value = invokeGet(son, field.getName()); - invokeSet(obj, field.getName(), value); - } - //将相同字段的值拷贝给obj - for (Map.Entry entry : publicFieldMap.entrySet()) { - String pFieldName = entry.getKey(); - if (SERIAL_VERSION_UID.equalsIgnoreCase(entry.getValue())) { - continue; - } - Object value = invokeGet(son, entry.getValue()); - if (null == value || "".equals(value)) { - value = invokeGet(parent, pFieldName); - } - invokeSet(obj, entry.getValue(), value); - } - } - } catch (Exception e) { - logger.error("error:{}", e); - } - return obj; - } - - - /** - * Division obj t. - * - * @param the type parameter - * @param parent 父对象 - * @param son 子对象 - * @param newSon 新的子对象 - * @param refClass class对象 - * @return T t - */ - public static T divisionObj(T parent, T son, T newSon, Class refClass) { - return divisionObj(parent, son, newSon, refClass, ""); - } - - - /** - * 比较产品域对象、项目域对象、页面对象,返回最后需要插入数据库中的对象 - * - * @param the type parameter - * @param parent 父对象 - * @param son 子对象 - * @param newSon 新的子对象 - * @param refClass class对象 - * @param excludeFields 不需要比较字段的列表 - * @return T t - */ - public static T divisionObj(T parent, T son, T newSon, Class refClass, String... excludeFields) { - for (Field field : refClass.getDeclaredFields()) { - if (SERIAL_VERSION_UID.equalsIgnoreCase(field.getName())) { - continue; - } - //排除不需要比较的字段 - if (!"".equals(excludeFields) && Arrays.asList(excludeFields).contains(field.getName())) { - continue; - } - /*项目域不存在,则说明该元素只是项目化没有修改,表里面不存在*/ - Object valueSon = (son == null) ? null : invokeGet(son, field.getName()); - /*子对象的对应的属性为空,则继承与产品域的属性,如果没有修改则继续继承*/ - if (valueSon == null) { - Object valueNewSon = invokeGet(newSon, field.getName()); - Object valueParent = invokeGet(parent, field.getName()); - if (valueParent != null && valueParent.equals(valueNewSon)) { - invokeSet(newSon, field.getName(), null); - } - } - } - return newSon; - } - - /** - * 应用场景,产品域字段列表跟项目域字段列表合并,以keyName作为主键,相同的keyName,则使用项目域的覆盖产品域的 - * - * @param the type parameter - * @param parentList 父域列表 - * @param sonList 子域列表 - * @param keyName 主键 - * @return list list - */ - public static List mergerList(List parentList, List sonList, String keyName) { - List resultList = new ArrayList(); - Map map = new HashMap<>(100); - if (parentList == null) { - resultList.addAll(sonList); - return resultList; - } - if (sonList == null) { - resultList.addAll(parentList); - return resultList; - } - resultList.addAll(parentList); - for (T obj : parentList) { - Object keyFieldName = invokeGet(obj, keyName); - map.put(keyFieldName, obj); - } - int size = sonList.size(); - for (int i = 0; i < size; i++) { - Object keyFieldName = invokeGet(sonList.get(i), keyName); - if (map.containsKey(keyFieldName)) { - resultList.remove(map.get(keyFieldName)); - resultList.add(i, sonList.get(i)); - } else { - resultList.add(sonList.get(i)); - } - } - return resultList; - } - - - /** - * 返回dto的所有属性字段名称 返回其中所有字段(除serialVersionUID之外) 可以用于设置值. - * - * @param the type parameter - * @param refClass the ref class - * @return the string [ ] - */ - public static String[] getAllFieldName(Class refClass) { - Field[] allField = refClass.getDeclaredFields(); - List allFieldList = new ArrayList(); - for (int i = 0, j = 0; i < allField.length; i++) { - String filedName = allField[i].getName(); - if (!SERIAL_VERSION_UID.equalsIgnoreCase(filedName)) { - allFieldList.add(filedName); - } - } - return allFieldList.toArray(new String[allFieldList.size()]); - } - - - /** - * 返回dto的所有Field字段 返回其中所有字段(除serialVersionUID之外) 可以用于设置值. - * - * @param the type parameter - * @param refClass the ref class - * @return the field [ ] - */ - public static Field[] getAllField(Class refClass) { - Field[] allField = refClass.getDeclaredFields(); - List allFieldList = new ArrayList(); - for (int i = 0, j = 0; i < allField.length; i++) { - if (!SERIAL_VERSION_UID.equalsIgnoreCase(allField[i].getName())) { - allFieldList.add(allField[i]); - } - } - return allFieldList.toArray(new Field[allFieldList.size()]); - } - - - /** - * 获取指定字段名称查找在class中的对应的Field对象(包括查找父类) - * - * @param clazz 指定的class - * @param fieldName 字段名称 - * @return Field对象 class field - */ - public static Field getClassField(Class clazz, String fieldName) { - if (!Object.class.getName().equals(clazz.getName())) { - Field[] declaredFields = clazz.getDeclaredFields(); - for (Field field : declaredFields) { - if (field.getName().equals(fieldName)) { - return field; - } - } - Class superClass = clazz.getSuperclass(); - if (superClass != null) { - // 简单的递归一下 - return getClassField(superClass, fieldName); - } - } - return null; - } - - -} - diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/config/MybatisPlusConfig.java b/demo/src/main/java/com/duanledexianxianxian/demo/config/MybatisPlusConfig.java deleted file mode 100644 index 4ac6478983287cbc46bebbcce76b7e9b2cf9216d..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/config/MybatisPlusConfig.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.duanledexianxianxian.demo.config; - -import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; -import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@EnableTransactionManagement -@Configuration -@MapperScan(basePackages = "com.duanledexianxianxian.demo.dao") -public class MybatisPlusConfig { - - @Bean - public PaginationInterceptor paginationInterceptor() { - PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); - // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false - // paginationInterceptor.setOverflow(false); - // 设置最大单页限制数量,默认 500 条,-1 不受限制 - // paginationInterceptor.setLimit(500); - // 开启 count 的 join 优化,只针对部分 left join - paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true)); - return paginationInterceptor; - } -} \ No newline at end of file diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/dao/MenuDao.java b/demo/src/main/java/com/duanledexianxianxian/demo/dao/MenuDao.java deleted file mode 100644 index 87cf733d982830c34f62e1d886544c206ed8be6f..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/dao/MenuDao.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.duanledexianxianxian.demo.dao; - -import com.duanledexianxianxian.demo.domain.entity.Menu; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; - -/** - *

- * 菜单表 Mapper 接口 - *

- * - * @author duanledexianxianxian - * @since 2020-03-19 - */ -public interface MenuDao extends BaseMapper { - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/dao/UserDao.java b/demo/src/main/java/com/duanledexianxianxian/demo/dao/UserDao.java deleted file mode 100644 index ff237a0ba962917794dee9c873678d7a1591c63c..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/dao/UserDao.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.duanledexianxianxian.demo.dao; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.duanledexianxianxian.demo.domain.entity.User; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.duanledexianxianxian.demo.domain.model.query.UserQuery; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - *

- * 用户表 Mapper 接口 - *

- * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -public interface UserDao extends BaseMapper { - - /** - * Gets list. - * - * @param page the page - * @param query the query - * @return the list - */ - List getList(IPage page, @Param("query") UserQuery query); -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/MenuDTO.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/MenuDTO.java deleted file mode 100644 index 923d35d8d22b97a91d40eb2be55c7f80464a44cf..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/MenuDTO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.duanledexianxianxian.demo.domain.dto; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 菜单传输对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class MenuDTO implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - - /** - * 菜单编号 - */ - private Long menuId; - - /** - * 菜单url - */ - private String menuUrl; - - /** - * 菜单名称 - */ - private String menuName; - - /** - * 菜单编码 - */ - private String menuCode; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/UserDTO.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/UserDTO.java deleted file mode 100644 index 1b0011b5e424ee8a8cf9601742aa4e5fa92ce923..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/dto/UserDTO.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.duanledexianxianxian.demo.domain.dto; - -import com.duanledexianxianxian.demo.domain.entity.Menu; -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDate; -import java.util.List; - -/** - * 用户传输对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class UserDTO implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - - /** - * 用户编号 - */ - private Long userId; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - - /** - * 年龄 - */ - private Integer age; - - /** - * 生日 - */ - private LocalDate birthday; - - /** - * 菜单列表 - */ - List menuList; - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/Menu.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/Menu.java deleted file mode 100644 index 7e4398e8afa625e7ca9c327219a3e43bfbba4692..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/Menu.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.duanledexianxianxian.demo.domain.entity; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.time.LocalDateTime; -import java.io.Serializable; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - *

- * 菜单表 - *

- * - * @author duanledexianxianxian - * @since 2020-03-19 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("test_menu") -public class Menu implements Serializable { - - private static final long serialVersionUID = 1L; - /** - * 用户编号 - */ - private Long userId; - /** - * 菜单编号 - */ - @TableId - private Long menuId; - - /** - * 菜单url - */ - private String menuUrl; - - /** - * 菜单名称 - */ - private String menuName; - - /** - * 菜单编码 - */ - private String menuCode; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/User.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/User.java deleted file mode 100644 index a12d127036eb2bc1679e55d42d23c2ce42aad7ff..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/entity/User.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.duanledexianxianxian.demo.domain.entity; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; -import java.time.LocalDate; -import java.io.Serializable; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.experimental.Accessors; - -/** - *

- * 用户表 - *

- * - * @author duanledexianxianxian - * @since 2020-03-19 - */ -@Data -@EqualsAndHashCode(callSuper = false) -@Accessors(chain = true) -@TableName("test_user") -public class User implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 用户编号 - */ - @TableId - private Long userId; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - - /** - * 年龄 - */ - private Integer age; - - /** - * 生日 - */ - private LocalDate birthday; - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuForm.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuForm.java deleted file mode 100644 index 8dfb283707af5c7262d44397b138022df44c9d85..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuForm.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.query; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 菜单表单对象 - * - * @author duanledexianxianxian - * @since 2020-03-19 - */ -@Data -public class MenuForm implements Serializable { - - private static final long serialVersionUID = 1L; - /** - * 用户编号 - */ - private Long userId; - /** - * 菜单编号 - */ - private Long menuId; - - /** - * 菜单url - */ - private String menuUrl; - - /** - * 菜单名称 - */ - private String menuName; - - /** - * 菜单编码 - */ - private String menuCode; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuQuery.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuQuery.java deleted file mode 100644 index 7abe4519669ed17de25fe16edde4d2e977ba28cb..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/MenuQuery.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.query; - -import lombok.Data; - -import java.io.Serializable; - -/** - * 菜单查询对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class MenuQuery implements Serializable { - - /** - * 菜单名称 - */ - private String menuName; - - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserForm.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserForm.java deleted file mode 100644 index 1c5d98a287b73ee2ed1cbe3eab2723272afb6a01..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserForm.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.query; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDate; - -/** - * 用户表单对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class UserForm implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - - /** - * 用户编号 - */ - private Long userId; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - - /** - * 年龄 - */ - private Integer age; - - /** - * 生日 - */ - private LocalDate birthday; - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserQuery.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserQuery.java deleted file mode 100644 index e31f052aed84c7fa674eda1e8784741a97b847a7..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/query/UserQuery.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.query; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDate; - -/** - * 用户查询对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class UserQuery implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - /** - * The Page num. - */ - Long pageNum=1L; - /** - * The Page size. - */ - Long pageSize=10L; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/MenuVO.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/MenuVO.java deleted file mode 100644 index d52f421c30410495871d6337f1f3cc7dba713259..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/MenuVO.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDateTime; - -/** - * 菜单vo对象 - * - * @author duanledexianxianxian - * @since 2020-03-19 - */ -@Data -public class MenuVO implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * 菜单编号 - */ - private Long menuId; - - /** - * 菜单url - */ - private String menuUrl; - - /** - * 菜单名称 - */ - private String menuName; - - /** - * 菜单编码 - */ - private String menuCode; - - /** - * 创建时间 - */ - private LocalDateTime createTime; - - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserDetailVO.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserDetailVO.java deleted file mode 100644 index 1164354fcec11c3c9aec20088334503eb30c574c..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserDetailVO.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDate; -import java.util.List; - -/** - * 用户vo对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class UserDetailVO implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - - /** - * 用户编号 - */ - private Long userId; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - - /** - * 年龄 - */ - private Integer age; - - /** - * 生日 - */ - private LocalDate birthday; - - /** - * The Menu list. - */ - private List menuList; -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserVO.java b/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserVO.java deleted file mode 100644 index dd7f8e104bcffd683257480e3d2f25bb5a02d5b5..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/domain/model/vo/UserVO.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.duanledexianxianxian.demo.domain.model.vo; - -import lombok.Data; - -import java.io.Serializable; -import java.time.LocalDate; - -/** - * 用户vo对象 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Data -public class UserVO implements Serializable { - - /** - * The constant serialVersionUID. - */ - private static final long serialVersionUID = 1L; - - /** - * 用户编号 - */ - private Long userId; - - /** - * 用户名称 - */ - private String userName; - - /** - * 用户昵称 - */ - private String nickName; - - /** - * 年龄 - */ - private Integer age; - - /** - * 生日 - */ - private LocalDate birthday; - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/service/IMenuService.java b/demo/src/main/java/com/duanledexianxianxian/demo/service/IMenuService.java deleted file mode 100644 index 78237d5c368e6450c4f4ce10236d53373b22215c..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/service/IMenuService.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.duanledexianxianxian.demo.service; - -import com.duanledexianxianxian.demo.domain.dto.MenuDTO; -import com.duanledexianxianxian.demo.domain.entity.Menu; -import com.baomidou.mybatisplus.extension.service.IService; -import com.duanledexianxianxian.demo.domain.model.query.MenuForm; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - *

- * 菜单表 服务类 - *

- * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -public interface IMenuService extends IService { - - /** - * Add menu long. - * - * @param form the form - * @return the long - */ - Long addMenu(MenuForm form); - - /** - * Edit menu boolean. - * - * @param form the form - * @return the boolean - */ - Boolean editMenu(MenuForm form); - - /** - * Delete menu boolean. - * - * @param menuId the menu id - * @return the boolean - */ - Boolean deleteMenu(Long menuId); - - - /** - * Gets user menu list. - * - * @param userId the user id - * @return the user menu list - */ - List getUserMenuList(Long userId); - -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/service/IUserService.java b/demo/src/main/java/com/duanledexianxianxian/demo/service/IUserService.java deleted file mode 100644 index 9d7aa10ecd7f1c3243b4a6b52af2ec8a66bc522f..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/service/IUserService.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.duanledexianxianxian.demo.service; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.duanledexianxianxian.demo.dao.UserDao; -import com.duanledexianxianxian.demo.domain.dto.MenuDTO; -import com.duanledexianxianxian.demo.domain.dto.UserDTO; -import com.duanledexianxianxian.demo.domain.entity.User; -import com.baomidou.mybatisplus.extension.service.IService; -import com.duanledexianxianxian.demo.domain.model.query.MenuForm; -import com.duanledexianxianxian.demo.domain.model.query.UserForm; -import com.duanledexianxianxian.demo.domain.model.query.UserQuery; - -import java.util.List; - -/** - * 用户接口 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -public interface IUserService extends IService { - /** - * Add menu long. - * - * @param query the query - * @return the long - */ - IPage getUserListPage(UserQuery query); - - /** - * Gets user menu list. - * - * @param userId the user id - * @return the user menu list - */ - UserDTO getUserDetail(Long userId); - - - /** - * Add menu long. - * - * @param form the form - * @return the long - */ - Long addUser(UserForm form); - - /** - * Edit menu boolean. - * - * @param form the form - * @return the boolean - */ - Boolean editUser(UserForm form); - - /** - * Delete menu boolean. - * - * @param userId the user id - * @return the boolean - */ - Boolean deleteUser(Long userId); -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/MenuServiceImpl.java b/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/MenuServiceImpl.java deleted file mode 100644 index f250f20c186012fb01107614e387ccb1357496c3..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/MenuServiceImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.duanledexianxianxian.demo.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.duanledexianxianxian.demo.common.util.BeanUtils; -import com.duanledexianxianxian.demo.domain.dto.MenuDTO; -import com.duanledexianxianxian.demo.domain.entity.Menu; -import com.duanledexianxianxian.demo.dao.MenuDao; -import com.duanledexianxianxian.demo.domain.model.query.MenuForm; -import com.duanledexianxianxian.demo.service.IMenuService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 菜单服务实现类 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Service -public class MenuServiceImpl extends ServiceImpl implements IMenuService { - - @Transactional(rollbackFor = Exception.class) - @Override - public Long addMenu(MenuForm form) { - // 做插入前检查 - Menu menu = BeanUtils.copyObject(form, Menu.class); - this.baseMapper.insert(menu); - return menu.getMenuId(); - } - - - @Transactional(rollbackFor = Exception.class) - @Override - public Boolean editMenu(MenuForm form) { - // 做编辑前检查 - Menu menu = BeanUtils.copyObject(form, Menu.class); - int cnt = this.baseMapper.updateById(menu); - return SqlHelper.retBool(cnt); - } - - - @Transactional(rollbackFor = Exception.class) - @Override - public Boolean deleteMenu(Long menuId) { - // 做删除前检查 - return SqlHelper.retBool(this.baseMapper.deleteById(menuId)); - } - - @Override - public List getUserMenuList(Long userId) { - return BeanUtils.copyList(this.baseMapper.selectList(new LambdaQueryWrapper() - .eq(Menu::getUserId, userId)), MenuDTO.class); - } -} diff --git a/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/UserServiceImpl.java b/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/UserServiceImpl.java deleted file mode 100644 index aea52db02204d2f6cb9f8e2278ca0812f9913b34..0000000000000000000000000000000000000000 --- a/demo/src/main/java/com/duanledexianxianxian/demo/service/impl/UserServiceImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.duanledexianxianxian.demo.service.impl; - -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.duanledexianxianxian.demo.common.util.BeanUtils; -import com.duanledexianxianxian.demo.dao.MenuDao; -import com.duanledexianxianxian.demo.domain.dto.MenuDTO; -import com.duanledexianxianxian.demo.domain.dto.UserDTO; -import com.duanledexianxianxian.demo.domain.entity.Menu; -import com.duanledexianxianxian.demo.domain.entity.User; -import com.duanledexianxianxian.demo.dao.UserDao; -import com.duanledexianxianxian.demo.domain.model.query.UserForm; -import com.duanledexianxianxian.demo.domain.model.query.UserQuery; -import com.duanledexianxianxian.demo.service.IMenuService; -import com.duanledexianxianxian.demo.service.IUserService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; - -import java.util.List; - -/** - * 用户服务接口实现类 - * - * @author duanledexianxianxian - * @since 2020 -03-19 - */ -@Service -public class UserServiceImpl extends ServiceImpl implements IUserService { - @Autowired - IMenuService menuService; - - @Override - public IPage getUserListPage(UserQuery query) { - IPage page = new Page(query.getPageNum(), query.getPageSize()); - List userList = this.baseMapper.getList(page, query); - page.setRecords(BeanUtils.copyList(userList, UserDTO.class)); - return page; - } - - @Override - public UserDTO getUserDetail(Long userId) { - User user = this.baseMapper.selectById(userId); - // 需要检查用户是否存在 - UserDTO userDTO = BeanUtils.copyObject(user, UserDTO.class); - List menuDTOList = menuService.getUserMenuList(userId); - userDTO.setMenuList(menuDTOList); - return userDTO; - } - - - @Override - public Long addUser(UserForm form) { - // 做插入前检查 - User user = BeanUtils.copyObject(form, User.class); - this.baseMapper.insert(user); - return user.getUserId(); - } - - @Override - public Boolean editUser(UserForm form) { - // 做编辑前检查 - User user = BeanUtils.copyObject(form, User.class); - return SqlHelper.retBool(this.baseMapper.updateById(user)); - } - - @Override - public Boolean deleteUser(Long userId) { - // 做删除前检查 - return SqlHelper.retBool(this.baseMapper.deleteById(userId)); - } -} diff --git a/demo/src/main/resources/mapper/test/MenuDao.xml b/demo/src/main/resources/mapper/test/MenuDao.xml deleted file mode 100644 index b22d87c4c8dcc0d90b236aab245e750b664b46b7..0000000000000000000000000000000000000000 --- a/demo/src/main/resources/mapper/test/MenuDao.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/demo/src/main/resources/mapper/test/UserDao.xml b/demo/src/main/resources/mapper/test/UserDao.xml deleted file mode 100644 index 4471bbbffb3d24f78736afc45ccf5f11c9772bce..0000000000000000000000000000000000000000 --- a/demo/src/main/resources/mapper/test/UserDao.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - user_id, user_name, nick_name, age, birthday - - - - - diff --git a/pom.xml b/pom.xml index b10a18f93af7a95685b9284a44cdb23d65a880cd..69cc99b5e1fc15b719a290653c0b6a5347cc8fb3 100644 --- a/pom.xml +++ b/pom.xml @@ -10,6 +10,7 @@ 1.0-SNAPSHOT demo + demo1