zdd 2 rokov pred
rodič
commit
b2d2139ccd

+ 5 - 0
pom.xml

@@ -51,6 +51,11 @@
             <artifactId>swagger-annotations</artifactId>
             <version>1.5.21</version>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.16.10</version>
+        </dependency>
 
 
     </dependencies>

+ 31 - 0
src/main/java/gencode/ColumnVo.java

@@ -0,0 +1,31 @@
+package gencode;
+
+import lombok.Data;
+
+@Data
+public class ColumnVo {
+    private String value;
+
+    private String column;
+
+    private String remake;
+
+    private String attribute;
+
+    private String attributeUp;
+
+    private String javaPackage;
+
+    private boolean keyFlag;
+
+
+
+    public ColumnVo() {
+    }
+
+    public ColumnVo( String column, String value,String javaPackage) {
+        this.value = value;
+        this.column = column;
+        this.javaPackage = javaPackage;
+    }
+}

+ 42 - 0
src/main/java/gencode/DataUtil.java

@@ -0,0 +1,42 @@
+package gencode;
+
+public class DataUtil {
+    static final char UNDER_LINE = '_';
+
+    public static String toCase(String source) {
+        if (source == null || source.trim().isEmpty()) {
+            return null;
+        }
+        StringBuilder target = new StringBuilder();
+        char[] charSourceArray = source.toCharArray();
+        char[] chartargeteArray1 = new char[charSourceArray.length];
+        char[] chartargeteArray2 = chartargeteArray1.clone();
+        for (int i = 0; i < charSourceArray.length; i++) {
+            // char值是否为数字
+            if (Character.isDigit(charSourceArray[i])) {
+                continue;
+            }
+            // char值是否为空格
+            if (Character.isWhitespace(charSourceArray[i])) {
+                continue;
+            }
+            // 如果是下划线,下划线后的字母转大写字母,否则都为小写字母
+            chartargeteArray1[i] = UNDER_LINE == charSourceArray[i] ? Character.toUpperCase(charSourceArray[i + 1]) : Character.toLowerCase(charSourceArray[i]);
+        }
+        for (int i = 0; i < chartargeteArray1.length; i++) {
+            if (i >= 1) {
+                // char值是否为大写字母
+                if (Character.isUpperCase(chartargeteArray1[i - 1])) {
+                    continue;
+                }
+            }
+            chartargeteArray2[i] = chartargeteArray1[i];
+            target.append(chartargeteArray2[i]);
+        }
+        return target.toString();
+    }
+
+    public static String toUp(String str){
+        return str.substring(0, 1).toUpperCase() + str.substring(1);
+    }
+}

+ 15 - 15
src/main/java/gencode/GeneratorCode.java → src/main/java/gencode/MybatisGenCode.java

@@ -13,49 +13,49 @@ import java.sql.*;
 import java.util.ArrayList;
 import java.util.List;
 
-public class GeneratorCode {
+public class MybatisGenCode {
     //数据驱动
     final static String DRIVER_CLASS = "com.mysql.jdbc.Driver";
     //数据库名
-    final static String DATABASE_NAME = "future";
+    final static String DATABASE_NAME = "airport_industry_db";
     //数据连接地址
-    final static String CONNECTION_URL = "jdbc:mysql://49.235.127.212:3306/" + DATABASE_NAME + "?characterEncoding=UTF-8";
+    final static String CONNECTION_URL = "jdbc:mysql://172.16.90.201:3306/" + DATABASE_NAME + "?characterEncoding=UTF-8";
     //数据库登录名
     final static String USER_ID = "root";
     //密码
     final static String PASS_WORD = "123456";
     //数据库表名
-    final static String TABLE_NAME = "pms_base_position";
+    final static String TABLE_NAME = "erp_channel_shop_material";
     //实体名称首字母小写
-    final static String ENTITY_NAME = "position";
+    final static String ENTITY_NAME = "erpChannelShopMaterial";
     //基础目录(不允许修改)
     final static String BASE_PACKAGE_NAME = "src.main.java.";
     //controller模版文件包结构
-    final static String PACKAGE_NAME = BASE_PACKAGE_NAME + "com.activiti6";
+    final static String PACKAGE_NAME = BASE_PACKAGE_NAME + "com.hw.admin";
     //controller模版文件包结构
-    final static String CONTROLLER_PACKAGE_NAME = "com.activiti6.controller";
+    final static String CONTROLLER_PACKAGE_NAME = "com.hw.admin.controller";
 
     //service模版文件包结构
-    final static String SERVICE_PACKAGE_NAME = "com.activiti6.service";
+    final static String SERVICE_PACKAGE_NAME = "com.hw.admin.service";
     //service模版文件包结构
-    final static String SERVICE_IMPL_PACKAGE_NAME = "com.activiti6.service.impl";
+    final static String SERVICE_IMPL_PACKAGE_NAME = "com.hw.admin.service.impl";
     //实体生产包名
-    final static String ENTITY_PACKAGE_NAME = "com.activiti6.model.entity";
+    final static String ENTITY_PACKAGE_NAME = "com.hw.admin.domain";
     //接口mybatis mapper
-    final static String MAPPER_PACKAGE_NAME = "com.activiti6.mapper";
+    final static String MAPPER_PACKAGE_NAME = "com.hw.admin.mapper";
     //mybatis xml文件
-    final static String XMLMAPPER_PACKAGE_NAME = "com.activiti6.mapper";
+    final static String XMLMAPPER_PACKAGE_NAME = "mapper";
 
 
     /**
      * 不能修改
      */
     //controller模版文件目录
-    final static String CONTROLLER_DIR = "src/main/resources/vm/java/controller/ModelController.java.vm";
+    final static String CONTROLLER_DIR = "src/main/resources/vm/mybatis/java/controller/ModelController.java.vm";
     //service 模版文件目录
-    final static String SERVICE_DIR = "src/main/resources/vm/java/service/ModelSeevice.java.vm";
+    final static String SERVICE_DIR = "src/main/resources/vm/mybatis/java/service/ModelSeevice.java.vm";
     //serviceImpl模版文件目录
-    final static String SERVICEIMPL_DIR = "src/main/resources/vm/java/service/impl/ModelServiceImpl.java.vm";
+    final static String SERVICEIMPL_DIR = "src/main/resources/vm/mybatis/java/service/impl/ModelServiceImpl.java.vm";
     //my_batis_config模版文件目录
     final static String MY_BATIS_CONFIG_DIR = "src/main/resources/vm/mybatis/generatorConfig.xml.vm";
 

+ 230 - 0
src/main/java/gencode/MybatisPlusGenCode.java

@@ -0,0 +1,230 @@
+package gencode;
+
+import org.apache.velocity.Template;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+
+import java.io.*;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+public class MybatisPlusGenCode {
+    //数据驱动
+    final static String DRIVER_CLASS = "com.mysql.jdbc.Driver";
+    //数据库名
+    final static String DATABASE_NAME = "airport_industry_db";
+    //数据连接地址
+    final static String CONNECTION_URL = "jdbc:mysql://172.16.90.201:3306/" + DATABASE_NAME + "?characterEncoding=UTF-8";
+    //数据库登录名
+    final static String USER_ID = "root";
+    //密码
+    final static String PASS_WORD = "123456";
+    //数据库表名
+    final static String[] TABLE_NAMES = {
+            "erp_channel_shop_material",
+            "air_goods",};
+
+    /**
+     * 不能修改
+     */
+    //controller模版文件目录
+    final static String CONTROLLER_DIR = "src/main/resources/vm/mybatisPlus/java/controller/ModelController.java.vm";
+    //service 模版文件目录
+    final static String SERVICE_DIR = "src/main/resources/vm/mybatisPlus/java/service/ModelSeevice.java.vm";
+    //serviceImpl模版文件目录
+    final static String SERVICEIMPL_DIR = "src/main/resources/vm/mybatisPlus/java/service/impl/ModelServiceImpl.java.vm";
+    //entity 模板文件目录
+    final static String ENTITY_DIR = "src/main/resources/vm/mybatisPlus/java/entity/ModelEntity.java.vm";
+
+    final static String MAPPER_JAVA_DIR = "src/main/resources/vm/mybatisPlus/java/mapper/ModelMapper.java.vm";
+
+    final static String MAPPER_XML_DIR = "src/main/resources/vm/mybatisPlus/java/mapper/ModelMapper.xml.vm";
+
+    //项目目录
+    final static String BASE_PACKAGE = "com.hw";
+    final static String BASE_PACKAGE_PATH = "src.main.java";
+    //基础目录(不允许修改)
+    final static String BASE_PACKAGE_NAME = BASE_PACKAGE_PATH + "." + BASE_PACKAGE;
+
+    public static void main(String[] args) throws Exception {
+        productionJavaFiles();
+
+    }
+
+    public static List<ColumnVo> getIdType(String tableName) {
+
+        List<ColumnVo> columnVos = new ArrayList<>();
+
+        try {
+            //1、注册JDBC驱动
+            Class.forName(DRIVER_CLASS);
+            //2、获取数据库连接
+            Connection connection = DriverManager.getConnection(CONNECTION_URL, USER_ID, PASS_WORD);
+            //3、操作数据库
+            Statement statement = connection.createStatement();//获取操作数据库的对象
+
+            String sql = "SELECT COLUMN_NAME,IS_NULLABLE,COLUMN_COMMENT,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,COLUMN_KEY " +
+                    "FROM information_schema. COLUMNS WHERE table_schema = '" + DATABASE_NAME + "' AND table_name = '" + tableName + "'";
+            ResultSet resultSet = statement.executeQuery(sql);//执行sql,获取结果集
+            System.out.println("sql:" + sql);
+            while (resultSet.next()) { //遍历结果集,取出数据
+                //输出数据
+                String key = resultSet.getString("COLUMN_KEY");
+                String column_name = resultSet.getString("COLUMN_NAME");
+                System.out.println("主键名称:" + column_name);
+                String data_type = resultSet.getString("DATA_TYPE");
+                String column_comment = resultSet.getString("COLUMN_COMMENT");
+                String IS_NULLABLE = resultSet.getString("IS_NULLABLE");
+
+                System.out.println("主键类型:" + data_type);
+                MysqlDataType enumType = MysqlDataType.getEnumType(data_type);
+                if (enumType != MysqlDataType.ERROR) {
+                    ColumnVo columnVo = new ColumnVo(column_name, enumType.getValue(), enumType.getJavaPackage());
+                    columnVo.setAttribute(DataUtil.toCase(column_name));
+                    columnVo.setAttributeUp(DataUtil.toUp(columnVo.getAttribute()));
+                    columnVo.setRemake(column_comment + " 必填:" + IS_NULLABLE);
+                    if("PRI".equals(key)){
+                        columnVo.setKeyFlag(true);
+                    }else{
+                        columnVo.setKeyFlag(false);
+                    }
+                    columnVos.add(columnVo);
+                }
+            }
+            //4、关闭结果集、数据库操作对象、数据库连接
+            resultSet.close();
+            statement.close();
+            connection.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("数据库连接错误!");
+        }
+        return columnVos;
+    }
+
+
+    private static void productionJavaFiles() throws Exception {
+
+        for (String tableName : TABLE_NAMES) {
+            VelocityEngine ve = new VelocityEngine();
+            ve.init();
+            VelocityContext ctx = new VelocityContext();
+            ctx.put("tableName", tableName);
+            //获取列数据
+            List<ColumnVo> mysqlDataType = getIdType(tableName);
+            for (ColumnVo columnVo : mysqlDataType) {
+                boolean keyFlag = columnVo.isKeyFlag();
+                if(keyFlag){
+                    ctx.put("keyPackage", columnVo.getJavaPackage());
+                    ctx.put("keyValue", columnVo.getValue());
+                    break;
+                }
+
+            }
+            if (mysqlDataType.size() > 0) {
+                Set<String> collect = mysqlDataType.stream().map(ColumnVo::getJavaPackage).collect(Collectors.toSet());
+                ctx.put("columns", mysqlDataType);
+                ctx.put("javaPackages", collect);
+                tableName = DataUtil.toCase(tableName);
+                ctx.put("entity", tableName);
+                String tableNameNew = DataUtil.toUp(tableName);
+                ctx.put("Entity", tableNameNew);
+
+                saveEntity(ve, ctx, tableNameNew);
+                saveMapper(ve, ctx, tableNameNew);
+                saveMapperXml(ve, ctx, tableNameNew);
+                saveService(ve, ctx, tableNameNew);
+                saveServiceImpl(ve, ctx, tableNameNew);
+                saveController(ve, ctx, tableNameNew);
+            }
+        }
+
+
+    }
+
+    private static void saveEntity(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+        createModel(ve, ctx, entityName, "domian", ENTITY_DIR, ".java", "ENTITY_PACKAGE_NAME");
+    }
+
+    private static void saveMapper(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+        createModel(ve, ctx, entityName, "mapper", MAPPER_JAVA_DIR, "Mapper.java", "MAPPER_PACKAGE_NAME");
+    }
+    private static void saveMapperXml(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+        createModel(ve, ctx, entityName, "mapper", MAPPER_XML_DIR, "Mapper.xml", "MAPPER_PACKAGE_NAME");
+    }
+
+    private static void saveService(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+        createModel(ve, ctx, entityName, "service", SERVICE_DIR, "Service.java", "service_package_name");
+    }
+
+    private static void saveServiceImpl(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+        createModel(ve, ctx, entityName, "service", SERVICEIMPL_DIR, "ServiceImpl.java", "service_impl_package_name");
+    }
+
+
+    private static void saveController(VelocityEngine ve, VelocityContext ctx, String entityName) throws IOException {
+
+
+        createModel(ve, ctx, entityName, "controller", CONTROLLER_DIR, "Controller.java", "controller_package_name");
+    }
+
+    private static void createModel(VelocityEngine ve, VelocityContext ctx, String entityName, String controller, String controllerDir, String s2, String controller_package_name) throws IOException {
+        String BaseName = controller;
+
+        Template t = ve.getTemplate(controllerDir);
+        //创建文件
+        String substring = entityName + s2;
+        //输出文件
+        String replace = BASE_PACKAGE_NAME.replace('.', '/') + "/" + BaseName + "/";
+        String s = replace + substring;
+
+        String str = replace.replace('/', '.') + substring;
+        String ENTITY_PACKAGE_NAME = str.replace(BASE_PACKAGE_PATH + ".", "");
+
+        String PACKAGE = BASE_PACKAGE + "." + BaseName;
+
+        ctx.put(controller_package_name, PACKAGE);
+
+        File controllerFile = new File(s);
+
+        saveFile(t, ctx, replace, controllerFile);
+    }
+
+
+    private static void saveFile(Template t, VelocityContext ctx, String filePath, File saveFile) throws IOException {
+
+        File path = new File(filePath);
+        //文件,如果不存在,就创建
+        if (!path.exists() && !path.isDirectory()) {
+            System.out.println("//不存在");
+            path.mkdirs();
+        } else {
+            System.out.println("//目录存在");
+        }
+        //创建文件输出流
+        FileOutputStream outStream = new FileOutputStream(saveFile);
+        //因为模板整合的时候,需要提供一个Writer,所以创建一个Writer
+        OutputStreamWriter writer = new OutputStreamWriter(outStream);
+
+        //创建一个缓冲流
+        BufferedWriter bufferWriter = new BufferedWriter(writer);
+
+        //5 Merge the template and you data toproduce the output
+        t.merge(ctx, bufferWriter);
+
+        bufferWriter.flush();//强制刷新
+
+        outStream.close();
+
+        bufferWriter.close();
+    }
+
+}

+ 2 - 1
src/main/java/gencode/MysqlDataType.java

@@ -20,7 +20,8 @@ public enum MysqlDataType {
     VARCHAR("varchar", "String", "java.lang.String"),
     CHAR("char", "String", "java.lang.String"),
     TEXT("text", "String", "java.lang.String"),
-    DATE("date", "Date", "java.sql.Date"),
+    DATE("date", "Date", "java.util.Date"),
+    DATETIME("datetime", "Date", "java.util.Date"),
     ERROR(null, null, null);
     private String key;
 

+ 5 - 5
src/main/resources/mybatis/generator/generatorConfig.fxml

@@ -14,7 +14,7 @@
         </commentGenerator>
         <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
-                        connectionURL="jdbc:mysql://49.235.127.212:3306/future?characterEncoding=UTF-8"
+                        connectionURL="jdbc:mysql://172.16.90.201:3306/airport_industry_db?characterEncoding=UTF-8"
                         userId="root"
                         password="123456">
         </jdbcConnection>
@@ -25,7 +25,7 @@
         </javaTypeResolver>
 
         <!-- targetProject:生成PO类的位置 -->
-        <javaModelGenerator targetPackage="com.activiti6.model.entity"
+        <javaModelGenerator targetPackage="com.hw.admin.domain"
                             targetProject="src/main/java">
             <!-- enableSubPackages:是否让schema作为包的后缀 -->
             <property name="enableSubPackages" value="false"/>
@@ -33,20 +33,20 @@
             <property name="trimStrings" value="true"/>
         </javaModelGenerator>
         <!-- targetProject:mapper映射文件生成的位置 -->
-        <sqlMapGenerator targetPackage="com.activiti6.mapper"
+        <sqlMapGenerator targetPackage="mapper"
                          targetProject="src/main/java">
             <!-- enableSubPackages:是否让schema作为包的后缀 -->
             <property name="enableSubPackages" value="false"/>
         </sqlMapGenerator>
         <!-- targetPackage:mapper接口生成的位置 -->
         <javaClientGenerator type="XMLMAPPER"
-                             targetPackage="com.activiti6.mapper"
+                             targetPackage="com.hw.admin.mapper"
                              targetProject="src/main/java">
             <!-- enableSubPackages:是否让schema作为包的后缀 -->
             <property name="enableSubPackages" value="false"/>
         </javaClientGenerator>
         <!-- 指定数据库表 -->
-        <table schema="root" tableName="pms_base_position" domainObjectName="Position">
+        <table schema="root" tableName="erp_channel_shop_material" domainObjectName="ErpChannelShopMaterial">
         </table>
 
     </context>

+ 0 - 53
src/main/resources/vm/java/service/impl/ModelServiceImpl.java.vm

@@ -1,53 +0,0 @@
-package $!{service_impl_package_name};
-
-import org.springframework.stereotype.Service;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import $!{service_package_name}.$!{Entity}Service;
-import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
-import $!{MAPPER_PACKAGE_NAME}.$!{Entity}Mapper;
-import $!{ENTITY_PACKAGE_NAME}.$!{Entity}Example;
-
-import $!{mysqlDataType.javaPackage};
-import java.util.List;
-
-@Service
-public class $!{Entity}ServiceImpl implements $!{Entity}Service {
-
-    @Autowired
-    private $!{Entity}Mapper $!{entity}Mapper;
-
-    @Override
-    public int add($!{Entity} $!{entity}) {
-        return $!{entity}Mapper.insertSelective($!{entity});
-    }
-
-    @Override
-    public List<$!{Entity}> list() {
-        $!{Entity}Example $!{entity}Example = new $!{Entity}Example();
-        return $!{entity}Mapper.selectByExample($!{entity}Example);
-    }
-
-    @Override
-    public $!{Entity} get($!{mysqlDataType.value} id) {
-        return $!{entity}Mapper.selectByPrimaryKey(id);
-    }
-
-    @Override
-    public int update($!{Entity} $!{entity}) {
-        return $!{entity}Mapper.updateByPrimaryKeySelective($!{entity});
-    }
-
-    @Override
-    public int delete($!{mysqlDataType.value} id) {
-        return $!{entity}Mapper.deleteByPrimaryKey(id);
-    }
-
-    @Override
-    public int deleteByIds(List<$!{mysqlDataType.value}> ids) {
-        $!{Entity}Example $!{entity}Example = new $!{Entity}Example();
-        $!{Entity}Example.Criteria criteria = $!{entity}Example.createCriteria();
-        criteria.and$!{mysqlDataType.column}In(ids);
-        return $!{entity}Mapper.deleteByExample($!{entity}Example);
-    }
-}

+ 53 - 0
src/main/resources/vm/mybatis/generator/generatorConfig.fxml

@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE generatorConfiguration
+        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
+        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
+
+<generatorConfiguration>
+    <context id="testTables" targetRuntime="MyBatis3">
+
+        <commentGenerator type="gencode.CommentGenerator">
+            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
+            <property name="suppressAllComments" value="true"/>
+            <property name="suppressDate" value="true"/>
+            <property name="addRemarkComments" value="true"/>
+        </commentGenerator>
+        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
+        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
+                        connectionURL="jdbc:mysql://172.16.90.201:3306/airport_industry_db?characterEncoding=UTF-8"
+                        userId="root"
+                        password="123456">
+        </jdbcConnection>
+        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
+            NUMERIC 类型解析为java.math.BigDecimal -->
+        <javaTypeResolver>
+            <property name="forceBigDecimals" value="false"/>
+        </javaTypeResolver>
+
+        <!-- targetProject:生成PO类的位置 -->
+        <javaModelGenerator targetPackage="com.hw.admin.domain"
+                            targetProject="src/main/java">
+            <!-- enableSubPackages:是否让schema作为包的后缀 -->
+            <property name="enableSubPackages" value="false"/>
+            <!-- 从数据库返回的值被清理前后的空格 -->
+            <property name="trimStrings" value="true"/>
+        </javaModelGenerator>
+        <!-- targetProject:mapper映射文件生成的位置 -->
+        <sqlMapGenerator targetPackage="mapper"
+                         targetProject="src/main/java">
+            <!-- enableSubPackages:是否让schema作为包的后缀 -->
+            <property name="enableSubPackages" value="false"/>
+        </sqlMapGenerator>
+        <!-- targetPackage:mapper接口生成的位置 -->
+        <javaClientGenerator type="XMLMAPPER"
+                             targetPackage="com.hw.admin.mapper"
+                             targetProject="src/main/java">
+            <!-- enableSubPackages:是否让schema作为包的后缀 -->
+            <property name="enableSubPackages" value="false"/>
+        </javaClientGenerator>
+        <!-- 指定数据库表 -->
+        <table schema="root" tableName="erp_channel_shop_material" domainObjectName="ErpChannelShopMaterial">
+        </table>
+
+    </context>
+</generatorConfiguration>

+ 31 - 10
src/main/resources/vm/java/controller/ModelController.java.vm → src/main/resources/vm/mybatis/java/controller/ModelController.java.vm

@@ -3,7 +3,11 @@ package $!{controller_package_name};
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import gencode.AjaxResultVo;
+import com.hw.admin.common.web.controller.BaseController;
+import com.hw.common.web.TableDataInfo;
+import com.hw.common.web.AjaxResultVo;
 
+import javax.validation.Valid;
 import java.util.List;
 
 import $!{service_package_name}.$!{Entity}Service;
@@ -13,47 +17,64 @@ import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
 
 @RestController
 @RequestMapping("/$!{entity}")
-public class $!{Entity}Controller {
+public class $!{Entity}Controller extends BaseController{
 
     @Autowired
     private $!{Entity}Service $!{entity}Service;
 
+    /**
+    * 新增
+    * @return
+    */
     @PostMapping
     @ResponseBody
-    public AjaxResultVo add(@RequestBody $!{Entity} $!{entity}) {
+    public AjaxResultVo add(@RequestBody @Valid $!{Entity} $!{entity}) {
         return AjaxResultVo.success($!{entity}Service.add($!{entity}));
     }
 
-
+    /**
+    * 分页查询
+    * @return
+    */
     @GetMapping("/list")
     @ResponseBody
-    public AjaxResultVo list() {
-
-        List<$!{Entity}> list = $!{entity}Service.list();
-        return AjaxResultVo.success(list);
+    public TableDataInfo list($!{Entity} $!{entity}) {
+        startPage();
+        List<$!{Entity}> list = $!{entity}Service.list($!{entity});
+        return getDataTable(list);
     }
 
+    /**
+    * 单个查询
+    * @return
+    */
     @GetMapping("/{id}")
     @ResponseBody
     public AjaxResultVo get(@PathVariable("id") $!{mysqlDataType.value} id) {
         return AjaxResultVo.success($!{entity}Service.get(id));
     }
 
+    /**
+    * 更新
+    * @return
+    */
     @PutMapping
     @ResponseBody
-    public AjaxResultVo update(@RequestBody $!{Entity} $!{entity}) {
+    public AjaxResultVo update(@RequestBody @Valid $!{Entity} $!{entity}) {
         return AjaxResultVo.success($!{entity}Service.update($!{entity}));
     }
+
     /**
-     * 批量删除请假业务
+     * 删除
      */
     @DeleteMapping("/{id}")
     @ResponseBody
     public AjaxResultVo delete(@PathVariable("id") $!{mysqlDataType.value} id) {
         return AjaxResultVo.success($!{entity}Service.delete(id));
     }
+
     /**
-     * 批量删除请假业务
+     * 批量删除
      */
     @DeleteMapping
     @ResponseBody

+ 1 - 1
src/main/resources/vm/java/service/ModelSeevice.java.vm → src/main/resources/vm/mybatis/java/service/ModelSeevice.java.vm

@@ -8,7 +8,7 @@ public interface  $!{Entity}Service {
 
     public int add($!{Entity} $!{entity});
 
-    public List<$!{Entity}> list();
+    public List<$!{Entity}> list($!{Entity} $!{entity});
 
     public $!{Entity} get($!{mysqlDataType.value} id);
 

+ 79 - 0
src/main/resources/vm/mybatis/java/service/impl/ModelServiceImpl.java.vm

@@ -0,0 +1,79 @@
+package $!{service_impl_package_name};
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.hw.admin.utils.DataCheck;
+import com.hw.admin.utils.DateCheckUtils;
+import com.hw.admin.utils.aop.EntityAdd;
+import com.hw.admin.utils.aop.EntityUpdate;
+import com.hw.admin.utils.aop.Validate;
+
+import $!{service_package_name}.$!{Entity}Service;
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
+import $!{MAPPER_PACKAGE_NAME}.$!{Entity}Mapper;
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity}Example;
+
+import $!{mysqlDataType.javaPackage};
+import java.util.List;
+
+@Service
+public class $!{Entity}ServiceImpl implements $!{Entity}Service {
+
+    @Autowired
+    private $!{Entity}Mapper $!{entity}Mapper;
+
+    @Override
+    @Validate(EntityAdd.class)
+    public int add($!{Entity} $!{entity}) {
+        return $!{entity}Mapper.insert($!{entity});
+    }
+
+    @Override
+    public List<$!{Entity}> list($!{Entity} $!{entity}) {
+        LambdaQueryWrapper<$!{Entity}> queryWrapper=new LambdaQueryWrapper();
+        queryWrapper.eq($!{Entity}::getDelFlag, DataCheck.defaultDeleFlagValueFalse);
+        queryWrapper.orderByDesc($!{Entity}::getCreateTime);
+        return $!{entity}Mapper.selectList(queryWrapper);
+    }
+
+
+    @Override
+    public $!{Entity} get($!{mysqlDataType.value} id) {
+        $!{Entity} $!{entity} = $!{entity}Mapper.selectById(id);
+        DateCheckUtils.checkProPerDataDefault($!{entity} );
+        return $!{entity};
+    }
+
+    @Override
+    @Transactional
+    @Validate(EntityUpdate.class)
+    public int update($!{Entity} $!{entity}) {
+        deleFlagCheck($!{entity}.getId());
+        return $!{entity}Mapper.updateById($!{entity});
+    }
+
+    @Override
+    public int delete($!{mysqlDataType.value} id) {
+        deleFlagCheck(id);
+        $!{Entity} $!{entity}=new $!{Entity}();
+        $!{entity}.setId(id);
+        $!{entity}.setDelFlag(DataCheck.defaultDeleFlagValueTrue);
+        return $!{entity}Mapper.updateById($!{entity});
+    }
+
+    @Override
+    public int deleteByIds(List<$!{mysqlDataType.value}> ids) {
+
+        return 0;
+    }
+
+    private void deleFlagCheck($!{mysqlDataType.value} id) throws IllegalAccessException {
+        $!{Entity}  $!{entity} = $!{entity}Mapper.selectById(id);
+        DateCheckUtils.checkProPerDataDefault($!{entity});
+    }
+
+}

+ 84 - 0
src/main/resources/vm/mybatisPlus/java/controller/ModelController.java.vm

@@ -0,0 +1,84 @@
+package $!{controller_package_name};
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import gencode.AjaxResultVo;
+import com.hw.admin.common.web.controller.BaseController;
+import com.hw.common.web.TableDataInfo;
+import com.hw.common.web.AjaxResultVo;
+
+import javax.validation.Valid;
+import java.util.List;
+
+import $!{service_package_name}.$!{Entity}Service;
+import $!{keyPackage};
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
+
+
+@RestController
+@RequestMapping("/$!{entity}")
+public class $!{Entity}Controller extends BaseController{
+
+    @Autowired
+    private $!{Entity}Service $!{entity}Service;
+
+    /**
+    * 新增
+    * @return
+    */
+    @PostMapping
+    @ResponseBody
+    public AjaxResultVo add(@RequestBody @Valid $!{Entity} $!{entity}) {
+        return AjaxResultVo.success($!{entity}Service.add($!{entity}));
+    }
+
+    /**
+    * 分页查询
+    * @return
+    */
+    @GetMapping("/list")
+    @ResponseBody
+    public TableDataInfo list($!{Entity} $!{entity}) {
+        startPage();
+        List<$!{Entity}> list = $!{entity}Service.list($!{entity});
+        return getDataTable(list);
+    }
+
+    /**
+    * 单个查询
+    * @return
+    */
+    @GetMapping("/{id}")
+    @ResponseBody
+    public AjaxResultVo get(@PathVariable("id") $!{keyValue} id) {
+        return AjaxResultVo.success($!{entity}Service.get(id));
+    }
+
+    /**
+    * 更新
+    * @return
+    */
+    @PutMapping
+    @ResponseBody
+    public AjaxResultVo update(@RequestBody @Valid $!{Entity} $!{entity}) {
+        return AjaxResultVo.success($!{entity}Service.update($!{entity}));
+    }
+
+    /**
+     * 删除
+     */
+    @DeleteMapping("/{id}")
+    @ResponseBody
+    public AjaxResultVo delete(@PathVariable("id") $!{keyValue} id) {
+        return AjaxResultVo.success($!{entity}Service.delete(id));
+    }
+
+    /**
+     * 批量删除
+     */
+    @DeleteMapping
+    @ResponseBody
+    public AjaxResultVo deleteByIds(@RequestBody List<$!{keyValue}> ids) {
+        return AjaxResultVo.success($!{entity}Service.deleteByIds(ids));
+    }
+}

+ 40 - 0
src/main/resources/vm/mybatisPlus/java/entity/ModelEntity.java.vm

@@ -0,0 +1,40 @@
+package $!{ENTITY_PACKAGE_NAME};
+
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+#foreach(${item} in $!{javaPackages} )
+import ${item};
+#end
+
+
+/**
+ * 流程历史单对象 db_table_his
+ *
+ * @author xtd
+ * @date 2020-04-14
+ */
+@Data
+@TableName("$!{tableName}")
+public class $!{Entity} {
+
+
+    #foreach(${item} in $!{columns} )
+    /**
+    * ${item.remake}
+    */
+    private ${item.value} ${item.attribute};
+    #end
+
+    #foreach(${item} in $!{columns} )
+    public ${item.value} get${item.attributeUp}() {
+            return ${item.attribute};
+    }
+
+    public void set${item.attributeUp}(${item.value} ${item.attribute}) {
+            this.${item.attribute} = ${item.attribute};
+    }
+    #end
+
+}

+ 15 - 0
src/main/resources/vm/mybatisPlus/java/mapper/ModelMapper.java.vm

@@ -0,0 +1,15 @@
+package $!{MAPPER_PACKAGE_NAME};
+
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 流程历史单Mapper接口
+ *
+ * @author xtd
+ * @date 2020-04-14
+ */
+@Mapper
+public interface $!{Entity}Mapper extends BaseMapper<$!{Entity}> {
+}

+ 9 - 0
src/main/resources/vm/mybatisPlus/java/mapper/ModelMapper.xml.vm

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="$!{MAPPER_PACKAGE_NAME}.$!{Entity}Mapper">
+
+
+
+</mapper>

+ 22 - 0
src/main/resources/vm/mybatisPlus/java/service/ModelSeevice.java.vm

@@ -0,0 +1,22 @@
+package $!{service_package_name};
+
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
+import $!{keyPackage};
+import java.util.List;
+
+
+public interface  $!{Entity}Service {
+
+    public int add($!{Entity} $!{entity});
+
+    public List<$!{Entity}> list($!{Entity} $!{entity});
+
+    public $!{Entity} get($!{keyValue} id);
+
+    public int update($!{Entity} $!{entity});
+
+    public int delete($!{keyValue} id);
+
+    public int deleteByIds(List<$!{keyValue}> ids);
+
+}

+ 73 - 0
src/main/resources/vm/mybatisPlus/java/service/impl/ModelServiceImpl.java.vm

@@ -0,0 +1,73 @@
+package $!{service_impl_package_name};
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import org.springframework.stereotype.Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+
+import $!{service_package_name}.$!{Entity}Service;
+import $!{ENTITY_PACKAGE_NAME}.$!{Entity};
+import $!{MAPPER_PACKAGE_NAME}.$!{Entity}Mapper;
+
+import $!{keyPackage};
+import java.util.List;
+
+@Service
+public class $!{Entity}ServiceImpl implements $!{Entity}Service {
+
+    @Autowired
+    private $!{Entity}Mapper $!{entity}Mapper;
+
+    @Override
+    @Validate(EntityAdd.class)
+    public int add($!{Entity} $!{entity}) {
+        return $!{entity}Mapper.insert($!{entity});
+    }
+
+    @Override
+    public List<$!{Entity}> list($!{Entity} $!{entity}) {
+        LambdaQueryWrapper<$!{Entity}> queryWrapper=new LambdaQueryWrapper();
+        queryWrapper.eq($!{Entity}::getDelFlag, DataCheck.defaultDeleFlagValueFalse);
+        queryWrapper.orderByDesc($!{Entity}::getCreateTime);
+        return $!{entity}Mapper.selectList(queryWrapper);
+    }
+
+
+    @Override
+    public $!{Entity} get($!{keyValue} id) {
+        $!{Entity} $!{entity} = $!{entity}Mapper.selectById(id);
+        DateCheckUtils.checkProPerDataDefault($!{entity} );
+        return $!{entity};
+    }
+
+    @Override
+    @Transactional
+    @Validate(EntityUpdate.class)
+    public int update($!{Entity} $!{entity}) {
+        deleFlagCheck($!{entity}.getId());
+        return $!{entity}Mapper.updateById($!{entity});
+    }
+
+    @Override
+    public int delete($!{keyValue} id) {
+        deleFlagCheck(id);
+        $!{Entity} $!{entity}=new $!{Entity}();
+        $!{entity}.setId(id);
+        $!{entity}.setDelFlag(DataCheck.defaultDeleFlagValueTrue);
+        return $!{entity}Mapper.updateById($!{entity});
+    }
+
+    @Override
+    public int deleteByIds(List<$!{keyValue}> ids) {
+
+        return 0;
+    }
+
+    private void deleFlagCheck($!{keyValue} id){
+        $!{Entity}  $!{entity} = $!{entity}Mapper.selectById(id);
+        DateCheckUtils.checkProPerDataDefault($!{entity});
+    }
+
+}