From 052e1d5c47c4e536fde79074d53b0481c7d4f9b6 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 13 十月 2021 18:33:42 +0800
Subject: [PATCH] 自动化代码生成优化

---
 src/main/java/org/yeshi/utils/generater/GeneraterManager.java                   |  323 ++++++++++++++++++++
 src/main/java/org/yeshi/utils/FileUtil.java                                     |    2 
 src/main/java/org/yeshi/utils/generater/params/DaoGeneraterParams.java          |   33 ++
 src/main/java/org/yeshi/utils/mybatis/BaseMapper.java                           |   23 +
 src/main/java/org/yeshi/utils/StringUtil.java                                   |    9 
 src/main/java/org/yeshi/utils/generater/params/ServiceGeneraterParams.java      |   44 ++
 src/main/java/org/yeshi/utils/generater/entity/MybatisColumnData.java           |    5 
 src/test/java/com/generater/TestEntity2.java                                    |   15 
 src/main/java/org/yeshi/utils/generater/annotation/admin/DaoQueryCondition.java |    2 
 src/test/java/com/generater/GeneratorTest.java                                  |   15 
 src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java              |    9 
 src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java                 |   57 +++
 src/main/java/org/yeshi/utils/generater/params/AdminGeneraterParams.java        |   33 ++
 src/test/java/com/generater/TestEntity.java                                     |   14 
 /dev/null                                                                       |    6 
 src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java                |   14 
 src/main/java/org/yeshi/utils/generater/vo/service/ServiceInfoVO.java           |   19 -
 src/main/java/org/yeshi/utils/generater/GeneraterUtil.java                      |  119 +++++++
 src/main/resources/generater/dao/mybatisDBDao.template                          |    5 
 src/main/resources/generater/service/queryVO.ftl                                |    3 
 src/main/java/org/yeshi/utils/mongo/MongodbBaseDao.java                         |  106 ++++++
 src/main/resources/generater/dao/mybatisDBXML.ftl                               |   28 +
 src/main/resources/generater/dao/mongoDBDao.template                            |   56 +-
 23 files changed, 856 insertions(+), 84 deletions(-)

diff --git a/src/main/java/org/yeshi/utils/FileUtil.java b/src/main/java/org/yeshi/utils/FileUtil.java
index 873b009..df7ce33 100644
--- a/src/main/java/org/yeshi/utils/FileUtil.java
+++ b/src/main/java/org/yeshi/utils/FileUtil.java
@@ -91,7 +91,7 @@
     /**
      * 灏嗚緭鍏ユ祦瀛樹负鏈湴鏂囦欢
      *
-     * @param inputStream
+     * @param b
      * @param path
      * @return
      * @throws IOException
diff --git a/src/main/java/org/yeshi/utils/StringUtil.java b/src/main/java/org/yeshi/utils/StringUtil.java
index bce6048..5aec7ed 100644
--- a/src/main/java/org/yeshi/utils/StringUtil.java
+++ b/src/main/java/org/yeshi/utils/StringUtil.java
@@ -328,10 +328,17 @@
 
     //棣栧瓧姣嶅皬鍐�
     public static String firstCharToLower(String st) {
-        if (st == null || st.length() < 2)
+        if (st == null || st.length() < 1)
             return st;
         return st.substring(0, 1).toLowerCase() + st.substring(1);
     }
 
+    //棣栧瓧姣嶅ぇ鍐�
+    public static String firstCharToUpper(String st) {
+        if (st == null || st.length() < 1)
+            return st;
+        return st.substring(0, 1).toUpperCase() + st.substring(1);
+    }
+
 
 }
diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterManager.java b/src/main/java/org/yeshi/utils/generater/GeneraterManager.java
new file mode 100644
index 0000000..30f5916
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/GeneraterManager.java
@@ -0,0 +1,323 @@
+package org.yeshi.utils.generater;
+
+import com.meizu.push.sdk.server.IFlymePush;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.yeshi.utils.FileUtil;
+import org.yeshi.utils.StringUtil;
+import org.yeshi.utils.generater.entity.ClassInfo;
+import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo;
+import org.yeshi.utils.generater.mybatis.Table;
+import org.yeshi.utils.generater.params.AdminGeneraterParams;
+import org.yeshi.utils.generater.params.DaoGeneraterParams;
+import org.yeshi.utils.generater.params.ServiceGeneraterParams;
+import org.yeshi.utils.generater.vo.ExceptionVO;
+import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO;
+import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO;
+import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO;
+import org.yeshi.utils.generater.vo.service.QueryVO;
+import org.yeshi.utils.generater.vo.service.ServiceImplInfoVO;
+import org.yeshi.utils.generater.vo.service.ServiceInfoVO;
+import org.yeshi.utils.mongo.MongodbBaseDao;
+import org.yeshi.utils.mybatis.BaseMapper;
+
+import java.io.File;
+import java.lang.annotation.Annotation;
+
+/**
+ * @author Administrator
+ * @title: GeneraterManager
+ * @description: 鑷姩鍖栦唬鐮佺敓鎴愮鐞嗗櫒
+ * @date 2021/10/13 14:48
+ */
+
+/**
+ * Title
+ *
+ * @Description //TODO
+ * @Author hxh
+ * @Date 18:11 2021/10/13
+ **/
+public class GeneraterManager {
+
+    private static GeneraterManager instance;
+
+    private String classRootDir;
+    private Class entity;
+
+    public static GeneraterManager getInstance() {
+        if (instance == null)
+            instance = new GeneraterManager();
+        return instance;
+    }
+
+    //绫荤殑鏍圭洰褰�
+    public void init(String classRootDir, Class entity) {
+        this.classRootDir = classRootDir;
+        this.entity = entity;
+    }
+
+    //鑾峰彇鏂囦欢澶圭殑璺緞
+    private String getDirPath(String packageName) {
+        File f = new File(classRootDir);
+        if (!f.exists()) {
+            f.mkdirs();
+        }
+        return new File(f.getAbsolutePath(), packageName.replace(".", "/")).getAbsolutePath();
+    }
+
+    public void createException(String packageName, Class base) {
+        String path = getDirPath(packageName);
+        try {
+            ExceptionVO vo = new ExceptionVO.Builder().setEntity(entity).setPackageName(packageName).setBase(new ClassInfo(base.getSimpleName(), base.getName())).build();
+            String result = GeneraterUtil.createException(vo);
+            //淇濆瓨
+            FileUtil.saveAsFileByte(result.getBytes("UTF-8"), path);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * @return org.yeshi.utils.generater.vo.dao.MongoDBDaoVO
+     * @author hxh
+     * @description 鑷姩鐢熸垚Dao
+     * @date 18:24 2021/10/13
+     * @param: packageName
+     **/
+    public MongoDBDaoVO createDao(String packageName) throws Exception {
+        String daoName = entity.getSimpleName() + "Dao";
+        String path = getDirPath(packageName);
+        MongoDBDaoVO vo = new MongoDBDaoVO.Builder()
+                .setBaseDao(new ClassInfo(MongodbBaseDao.class.getSimpleName(), MongodbBaseDao.class.getName()))
+                .setDao(new ClassInfo(daoName, packageName + "." + daoName))
+                .setEntity(entity).build();
+        String result = GeneraterUtil.createMongoDBDao(vo);
+        //淇濆瓨
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, daoName).getAbsolutePath());
+        return vo;
+    }
+
+    /**
+     * @return org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO
+     * @author hxh
+     * @description 鑷姩鐢熸垚Mapper
+     * @date 18:24 2021/10/13
+     * @param: packageName
+     * @param: mapperDir
+     **/
+    public MyBatisDBDaoVO createMapper(String packageName, String mapperDir) throws Exception {
+        String mapperName = entity.getSimpleName() + "Mapper";
+        String path = getDirPath(packageName);
+        MyBatisDBDaoVO vo = new MyBatisDBDaoVO.Builder()
+                .setBaseMapper(new ClassInfo(BaseMapper.class.getSimpleName(), BaseMapper.class.getName()))
+                .setMapper(new ClassInfo(mapperName, packageName + "." + mapperName))
+                .setEntity(entity)
+                .build();
+        String result = GeneraterUtil.createMybatisDBMapper(vo);
+        //淇濆瓨
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, mapperName + ".java").getAbsolutePath());
+        if (!new File(mapperDir).exists())
+            new File(mapperDir).mkdirs();
+        result = GeneraterUtil.createMybatisDBMapperXML(vo);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(mapperDir, mapperName + ".xml").getAbsolutePath());
+        return vo;
+    }
+
+    /**
+     * @return org.yeshi.utils.generater.vo.service.QueryVO
+     * @author hxh
+     * @description /鍒涘缓鏌ヨQuery
+     * @date 18:24 2021/10/13
+     * @param: packageName
+     **/
+    public QueryVO createQuery(String packageName) throws Exception {
+        //鍒涘缓Query
+        String path = getDirPath(packageName);
+        QueryVO queryVO = new QueryVO.Builder().setEntity(entity).setPackageName(packageName).build();
+        String result = GeneraterUtil.createQuery(queryVO);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, queryVO.getClassName() + ".java").getAbsolutePath());
+        return queryVO;
+    }
+
+    /**
+     * @return org.yeshi.utils.generater.vo.service.ServiceInfoVO
+     * @author hxh
+     * @description 鑷姩鐢熸垚鏈嶅姟
+     * @date 18:23 2021/10/13
+     * @param: interPackageName
+     * @param: implPackageName
+     * @param: query
+     * @param: dao
+     **/
+    public ServiceInfoVO createService(String interPackageName, String implPackageName, ClassInfo query, ClassInfo dao) throws Exception {
+
+
+        //鍒涘缓service鎺ュ彛
+        String serviceName = entity.getSimpleName() + "Service";
+        String path = getDirPath(interPackageName);
+        ServiceInfoVO vo = new ServiceInfoVO.Builder()
+                .setPackageName(interPackageName)
+                .setEntity(entity)
+                .setQuery(query)
+                .setService(new ClassInfo(serviceName, interPackageName + "." + serviceName))
+                .build();
+        String result = GeneraterUtil.createService(vo);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, serviceName + ".java").getAbsolutePath());
+
+        //鍒涘缓service瀹炵幇
+        String serviceImplName = entity.getSimpleName() + "ServiceImpl";
+        path = getDirPath(implPackageName);
+        ServiceImplInfoVO implVO = new ServiceImplInfoVO.Builder()
+                .setDao(dao)
+                .setPackageName(implPackageName)
+                .setEntity(entity)
+                .setQuery(query)
+                .setService(new ClassInfo(serviceName, interPackageName + "." + serviceName))
+                .setDaoQuery(new ClassInfo("DaoQuery", dao.getClazz() + ".DaoQuery"))
+                .build();
+        result = GeneraterUtil.createServiceImpl(implVO);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, serviceImplName + ".java").getAbsolutePath());
+        return vo;
+    }
+
+
+    /**
+     * @return void
+     * @author hxh
+     * @description 鑷姩鐢熸垚绠$悊妯″潡
+     * @date 18:23 2021/10/13
+     * @param: controllerPackage
+     * @param: htmlDir
+     * @param: query
+     * @param: service
+     **/
+    public void createAdmin(String controllerPackage, String htmlDir, ClassInfo query, ClassInfo service) throws Exception {
+        String path = getDirPath(controllerPackage);
+
+        String controllerName = entity.getSimpleName() + "AdminController";
+        AdminGeneraterInfo generaterInfo = new AdminGeneraterInfo.Builder().setEntityClass(entity).build();
+
+
+        String htmlNamePrefix = getHtmlNameFromEntityName(entity.getSimpleName());
+        AdminControllerInfoVO vo = new AdminControllerInfoVO.Builder().setAdminInfo(generaterInfo).setPackageName(controllerName).setQueryVO(query).setService(service).build();
+        //鐢熸垚controller
+        String result = GeneraterUtil.createAdminController(vo);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(path, controllerName + ".java").getAbsolutePath());
+
+
+        result = GeneraterUtil.createAdminPageForList(generaterInfo);
+        FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(htmlDir, htmlNamePrefix + "_list.html").getAbsolutePath());
+
+        if (generaterInfo.getAddFormRows() != null && generaterInfo.getAddFormRows().size() > 0) {
+            result = GeneraterUtil.createAdminPageForAdd(generaterInfo);
+            FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(htmlDir, htmlNamePrefix + "_add.html").getAbsolutePath());
+        }
+
+        if (generaterInfo.getUpdateFormRows() != null && generaterInfo.getUpdateFormRows().size() > 0) {
+            result = GeneraterUtil.createAdminPageForUpdate(generaterInfo);
+            FileUtil.saveAsFileByte(result.getBytes("UTF-8"), new File(htmlDir, htmlNamePrefix + "_update.html").getAbsolutePath());
+        }
+    }
+
+
+    /**
+     * @return void
+     * @author hxh
+     * @description 鍒涘缓鏁翠釜鍔熻兘妯″潡
+     * @date 18:19 2021/10/13
+     * @param: daoParams
+     * @param: serviceParams
+     * @param: adminParams
+     **/
+    public void createWholeFunction(DaoGeneraterParams daoParams, ServiceGeneraterParams serviceParams, AdminGeneraterParams adminParams) throws Exception {
+        Annotation[] as = entity.getAnnotations();
+        int type = -1;
+        for (Annotation a : as) {
+            if (a instanceof Table) {
+                type = 1;
+                break;
+            } else if (a instanceof Document) {
+                type = 2;
+                break;
+            }
+        }
+        if (type == -1) {
+            throw new Exception("瀹炰綋鏈厤缃甿ybatis鎴栬�卪ongodb");
+        }
+
+        if (daoParams != null) {
+            if (type == 1 && StringUtil.isNullOrEmpty(daoParams.getMapperXMLDir())) {
+                throw new Exception("mybatis xml鏂囦欢璺緞涓虹┖");
+            }
+        }
+
+        //鍒涘缓dao
+        ClassInfo daoClass = null;
+        if (daoParams != null) {
+            if (type == 1) {
+                MyBatisDBDaoVO vo = createMapper(daoParams.getDaoPackage(), daoParams.getMapperXMLDir());
+                daoClass = vo.getMapper();
+            } else {
+                MongoDBDaoVO vo = createDao(daoParams.getDaoPackage());
+                daoClass = new ClassInfo(vo.getDaoName(), vo.getPackageName() + "." + vo.getDaoName());
+            }
+        }
+
+        ClassInfo queryClass = null;
+        ClassInfo serviceClass = null;
+
+        if (serviceParams != null) {
+            //鍒涘缓Query
+            QueryVO queryVO = createQuery(serviceParams.getQueryPackage());
+            queryClass = new ClassInfo(queryVO.getClassName(), queryVO.getPackageName() + "." + queryVO.getClassName());
+
+            //鍒涘缓service
+            ServiceInfoVO serviceInfoVO = createService(serviceParams.getServiceInterPackage(), serviceParams.getServiceImplPackage(), queryClass, daoClass);
+            serviceClass = serviceInfoVO.getService();
+        }
+
+        //鍒涘缓Admin妯″潡
+        createAdmin(adminParams.getControllerPackage(), adminParams.getHtmlDir(), queryClass, serviceClass);
+    }
+
+    /**
+     * @return java.lang.String
+     * @author hxh
+     * @description 閫氳繃entity鐨勫悕绉拌幏鍙杊tml鏂囦欢鐨勫墠缂�鍚嶇О
+     * @date 18:25 2021/10/13
+     * @param: entityName
+     **/
+    private static String getHtmlNameFromEntityName(String entityName) {
+        StringBuffer sb = new StringBuffer();
+        StringBuffer buffer = null;
+        for (int i = 0; i < entityName.length(); i++) {
+            if (entityName.charAt(i) >= 65 && entityName.charAt(i) <= 90) {
+                //澶у啓瀛楁瘝
+                if (buffer == null)
+                    buffer = new StringBuffer();
+                buffer.append(entityName.charAt(i));
+            } else {
+                if (buffer != null) {
+                    sb.append("_" + buffer.toString().toLowerCase());
+                    buffer = null;
+                }
+                sb.append(entityName.charAt(i));
+            }
+        }
+
+        if (buffer != null) {
+            sb.append("_" + buffer.toString().toLowerCase());
+        }
+
+        if (sb.charAt(0) == '_')
+            sb = sb.replace(0, 1, "");
+        return sb.toString();
+    }
+
+
+    public static void main(String[] args) {
+        System.out.print(getHtmlNameFromEntityName("TTestEEntity"));
+    }
+
+
+}
diff --git a/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java b/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java
new file mode 100644
index 0000000..204c1d7
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/GeneraterUtil.java
@@ -0,0 +1,119 @@
+package org.yeshi.utils.generater;
+
+import org.yeshi.utils.FreemarkerUtils;
+import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo;
+import org.yeshi.utils.generater.vo.ExceptionVO;
+import org.yeshi.utils.generater.vo.admin.controller.AdminControllerInfoVO;
+import org.yeshi.utils.generater.vo.admin.page.FormAddInfoVO;
+import org.yeshi.utils.generater.vo.admin.page.FormUpdateInfoVO;
+import org.yeshi.utils.generater.vo.admin.page.ListInfoVO;
+import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO;
+import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO;
+import org.yeshi.utils.generater.vo.service.QueryVO;
+import org.yeshi.utils.generater.vo.service.ServiceImplInfoVO;
+import org.yeshi.utils.generater.vo.service.ServiceInfoVO;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+public class GeneraterUtil {
+
+    public static String createException(ExceptionVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\exception.template"));
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createMongoDBDao(MongoDBDaoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\dao\\mongoDBDao.template"));
+        System.out.println(result);
+        return result;
+    }
+
+
+    public static String createMybatisDBMapper(MyBatisDBDaoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\dao\\mybatisDBDao.template"));
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createMybatisDBMapperXML(MyBatisDBDaoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\dao\\mybatisDBXML.ftl"));
+        System.out.println(result);
+        return result;
+    }
+
+
+    public static String createQuery(QueryVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\service\\queryVO.ftl"));
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createService(ServiceInfoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\service\\service.template"));
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createServiceImpl(ServiceImplInfoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\service\\serviceImpl.template"));
+        System.out.println(result);
+        return result;
+    }
+
+
+    public static String createAdminController(AdminControllerInfoVO vo) throws IOException {
+        String result = FreemarkerUtils.generateInputStream(vo, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater\\admin\\adminController.template"));
+        System.out.println(result);
+        return result;
+    }
+
+
+    private static Map<String, InputStream> getAdminIncludePageMap() {
+        //灏嗘墍鏈夌殑鎺т欢妯℃澘鍔犺浇杩涘幓
+        String[] template = new String[]{
+                "admin/form/checkBox.ftl",
+                "admin/form/img.ftl",
+                "admin/form/password.ftl",
+                "admin/form/radioGroup.ftl",
+                "admin/form/select.ftl",
+                "admin/form/switch.ftl",
+                "admin/form/text.ftl",
+                "admin/form/textArea.ftl",
+                "admin/add.ftl",
+                "admin/update.ftl",
+                "admin/list.ftl"
+        };
+        Map<String, InputStream> map = new HashMap<>();
+        for (String st : template) {
+            map.put(st, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater/" + st));
+        }
+        return map;
+    }
+
+    public static String createAdminPageForUpdate(AdminGeneraterInfo vo) throws IOException {
+        Map<String, InputStream> map = getAdminIncludePageMap();
+        String result = FreemarkerUtils.generateInputStream(new FormUpdateInfoVO.Builder().setAdminInfo(vo).build(), "admin/update.ftl", map);
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createAdminPageForAdd(AdminGeneraterInfo vo) throws IOException {
+        Map<String, InputStream> map = getAdminIncludePageMap();
+        String result = FreemarkerUtils.generateInputStream(new FormAddInfoVO.Builder().setAdminInfo(vo).build(), "admin/add.ftl", map);
+        System.out.println(result);
+        return result;
+    }
+
+    public static String createAdminPageForList(AdminGeneraterInfo vo) throws IOException {
+        Map<String, InputStream> map = getAdminIncludePageMap();
+        String result = FreemarkerUtils.generateInputStream(new ListInfoVO.Builder().setAdminInfo(vo).build(), "admin/list.ftl", map);
+        System.out.println(result);
+        return result;
+    }
+
+
+}
diff --git a/src/main/java/org/yeshi/utils/generater/SpringComponentGenerater.java b/src/main/java/org/yeshi/utils/generater/SpringComponentGenerater.java
deleted file mode 100644
index f8d9302..0000000
--- a/src/main/java/org/yeshi/utils/generater/SpringComponentGenerater.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.yeshi.utils.generater;
-
-public class SpringComponentGenerater {
-
-
-}
diff --git a/src/main/java/org/yeshi/utils/generater/annotation/admin/DaoQueryCondition.java b/src/main/java/org/yeshi/utils/generater/annotation/admin/DaoQueryCondition.java
index 40ce4d3..474b9ba 100644
--- a/src/main/java/org/yeshi/utils/generater/annotation/admin/DaoQueryCondition.java
+++ b/src/main/java/org/yeshi/utils/generater/annotation/admin/DaoQueryCondition.java
@@ -20,7 +20,7 @@
 
     //鏄剧ず绫诲瀷
     enum QueryType {
-        start, end, contains, equal
+        start, end, contains, equal, gt, gte, lt, lte
     }
 
 
diff --git a/src/main/java/org/yeshi/utils/generater/entity/MybatisColumnData.java b/src/main/java/org/yeshi/utils/generater/entity/MybatisColumnData.java
index 26f0e49..c979d88 100644
--- a/src/main/java/org/yeshi/utils/generater/entity/MybatisColumnData.java
+++ b/src/main/java/org/yeshi/utils/generater/entity/MybatisColumnData.java
@@ -16,6 +16,11 @@
         this.jdbcType = jdbcType;
     }
 
+    public MybatisColumnData( String property) {
+        this.property = property;
+    }
+
+
     public String getColumn() {
         return column;
     }
diff --git a/src/main/java/org/yeshi/utils/generater/params/AdminGeneraterParams.java b/src/main/java/org/yeshi/utils/generater/params/AdminGeneraterParams.java
new file mode 100644
index 0000000..09ef57a
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/params/AdminGeneraterParams.java
@@ -0,0 +1,33 @@
+package org.yeshi.utils.generater.params;
+
+/**
+ * @author Administrator
+ * @title: DaoParams
+ * @description: 绠$悊鍔熻兘鐢熸垚鍙傛暟
+ * @date 2021/10/13 17:41
+ */
+public class AdminGeneraterParams {
+    private String controllerPackage;
+    private String htmlDir;
+
+    public AdminGeneraterParams(String controllerPackage, String htmlDir) {
+        this.controllerPackage = controllerPackage;
+        this.htmlDir = htmlDir;
+    }
+
+    public String getControllerPackage() {
+        return controllerPackage;
+    }
+
+    public void setControllerPackage(String controllerPackage) {
+        this.controllerPackage = controllerPackage;
+    }
+
+    public String getHtmlDir() {
+        return htmlDir;
+    }
+
+    public void setHtmlDir(String htmlDir) {
+        this.htmlDir = htmlDir;
+    }
+}
diff --git a/src/main/java/org/yeshi/utils/generater/params/DaoGeneraterParams.java b/src/main/java/org/yeshi/utils/generater/params/DaoGeneraterParams.java
new file mode 100644
index 0000000..30f34be
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/params/DaoGeneraterParams.java
@@ -0,0 +1,33 @@
+package org.yeshi.utils.generater.params;
+
+/**
+ * @author Administrator
+ * @title: DaoParams
+ * @description: 鐢熸垚Dao鐨勫弬鏁伴厤缃�
+ * @date 2021/10/13 17:41
+ */
+public class DaoGeneraterParams {
+    private String daoPackage;
+    private String mapperXMLDir;
+
+    public DaoGeneraterParams(String daoPackage, String mapperXMLDir) {
+        this.daoPackage = daoPackage;
+        this.mapperXMLDir = mapperXMLDir;
+    }
+
+    public String getDaoPackage() {
+        return daoPackage;
+    }
+
+    public void setDaoPackage(String daoPackage) {
+        this.daoPackage = daoPackage;
+    }
+
+    public String getMapperXMLDir() {
+        return mapperXMLDir;
+    }
+
+    public void setMapperXMLDir(String mapperXMLDir) {
+        this.mapperXMLDir = mapperXMLDir;
+    }
+}
diff --git a/src/main/java/org/yeshi/utils/generater/params/ServiceGeneraterParams.java b/src/main/java/org/yeshi/utils/generater/params/ServiceGeneraterParams.java
new file mode 100644
index 0000000..8f0dcd8
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/params/ServiceGeneraterParams.java
@@ -0,0 +1,44 @@
+package org.yeshi.utils.generater.params;
+
+/**
+ * @author Administrator
+ * @title: DaoParams
+ * @description: service鑷姩鐢熸垚鍙傛暟
+ * @date 2021/10/13 17:41
+ */
+public class ServiceGeneraterParams {
+
+    private String queryPackage;
+    private String serviceInterPackage;
+    private String serviceImplPackage;
+
+    public ServiceGeneraterParams(String queryPackage, String serviceInterPackage, String serviceImplPackage) {
+        this.queryPackage = queryPackage;
+        this.serviceInterPackage = serviceInterPackage;
+        this.serviceImplPackage = serviceImplPackage;
+    }
+
+    public String getQueryPackage() {
+        return queryPackage;
+    }
+
+    public void setQueryPackage(String queryPackage) {
+        this.queryPackage = queryPackage;
+    }
+
+    public String getServiceInterPackage() {
+        return serviceInterPackage;
+    }
+
+    public void setServiceInterPackage(String serviceInterPackage) {
+        this.serviceInterPackage = serviceInterPackage;
+    }
+
+    public String getServiceImplPackage() {
+        return serviceImplPackage;
+    }
+
+    public void setServiceImplPackage(String serviceImplPackage) {
+        this.serviceImplPackage = serviceImplPackage;
+    }
+}
diff --git a/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java b/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java
index d214ea5..9bc53a3 100644
--- a/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java
+++ b/src/main/java/org/yeshi/utils/generater/vo/dao/MongoDBDaoVO.java
@@ -2,11 +2,9 @@
 
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.Transient;
+import org.yeshi.utils.StringUtil;
 import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition;
-import org.yeshi.utils.generater.entity.BaseData;
-import org.yeshi.utils.generater.entity.ClassInfo;
-import org.yeshi.utils.generater.entity.ColumnData;
-import org.yeshi.utils.generater.entity.DaoQueryColumnData;
+import org.yeshi.utils.generater.entity.*;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Field;
@@ -99,7 +97,13 @@
                 //鑾峰彇鏌ヨ鏉′欢
                 for (Annotation a : as) {
                     if (a instanceof DaoQueryCondition) {
-                        daoQueryColumnList.add(new DaoQueryColumnData(columName, columnDataType, ((DaoQueryCondition) a).queryType()));
+                        MybatisColumnData columnData=new MybatisColumnData(columName);
+                        if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) {
+                            daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columName),columnData, fd.getType().getSimpleName(),  DaoQueryCondition.QueryType.lt));
+                            daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columName),columnData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte));
+                        } else {
+                            daoQueryColumnList.add(new DaoQueryColumnData(columName,columnData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType()));
+                        }
                         break;
                     }
                 }
diff --git a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java
index ee9a630..aba2762 100644
--- a/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java
+++ b/src/main/java/org/yeshi/utils/generater/vo/dao/MyBatisDBDaoVO.java
@@ -2,6 +2,7 @@
 
 import org.springframework.data.annotation.Id;
 import org.springframework.data.annotation.Transient;
+import org.yeshi.utils.StringUtil;
 import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition;
 import org.yeshi.utils.generater.entity.*;
 import org.yeshi.utils.generater.mybatis.Column;
@@ -119,6 +120,7 @@
                     //涓婚敭
                     if (a instanceof Id) {
                         identity = columData;
+                        identity.setType(fd.getType().getName());
                         valid = false;
                         break;
                     }
@@ -134,7 +136,12 @@
                 //鑾峰彇鏌ヨ鏉′欢
                 for (Annotation a : as) {
                     if (a instanceof DaoQueryCondition) {
-                        daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType()));
+                        if (fd.getType().getSimpleName().equalsIgnoreCase("Date")) {
+                            daoQueryColumnList.add(new DaoQueryColumnData("max" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.lt));
+                            daoQueryColumnList.add(new DaoQueryColumnData("min" + StringUtil.firstCharToUpper(columData.getProperty()), columData, fd.getType().getSimpleName(), DaoQueryCondition.QueryType.gte));
+                        } else {
+                            daoQueryColumnList.add(new DaoQueryColumnData(columData.getProperty(), columData, fd.getType().getSimpleName(), ((DaoQueryCondition) a).queryType()));
+                        }
                         break;
                     }
                 }
diff --git a/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java b/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java
new file mode 100644
index 0000000..796b659
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/generater/vo/service/QueryVO.java
@@ -0,0 +1,57 @@
+package org.yeshi.utils.generater.vo.service;
+
+import org.yeshi.utils.generater.entity.BaseData;
+import org.yeshi.utils.generater.util.EntityUtil;
+
+import java.lang.reflect.Field;
+
+public class QueryVO extends BaseData {
+    private String className;
+
+    public static class Builder {
+        private Class entity;
+        private String packageName;
+
+
+        public Builder setEntity(Class entity) {
+            this.entity = entity;
+            return this;
+        }
+
+        public Builder setPackageName(String packageName) {
+            this.packageName = packageName;
+            return this;
+        }
+
+        private void validParams() throws Exception {
+            if (entity == null) {
+                throw new Exception("entity涓嶈兘涓虹┖");
+            }
+            if (packageName == null) {
+                throw new Exception("packageName涓嶈兘涓虹┖");
+            }
+        }
+
+
+        public QueryVO build() throws Exception {
+            validParams();
+            Field identifyId = EntityUtil.getIdentifyId(entity);
+            if (identifyId == null) {
+                throw new Exception("灏氭湭鎵惧埌涓婚敭灞炴��");
+            }
+            QueryVO vo = new QueryVO();
+            vo.setPackageName(packageName);
+            vo.setClassName(entity.getSimpleName() + "Query");
+            return vo;
+        }
+
+    }
+
+    public String getClassName() {
+        return className;
+    }
+
+    public void setClassName(String className) {
+        this.className = className;
+    }
+}
diff --git a/src/main/java/org/yeshi/utils/generater/vo/service/ServiceInfoVO.java b/src/main/java/org/yeshi/utils/generater/vo/service/ServiceInfoVO.java
index 3e7610e..39c3b29 100644
--- a/src/main/java/org/yeshi/utils/generater/vo/service/ServiceInfoVO.java
+++ b/src/main/java/org/yeshi/utils/generater/vo/service/ServiceInfoVO.java
@@ -11,7 +11,6 @@
 
 public class ServiceInfoVO extends BaseData {
     private ClassInfo service;
-    private ClassInfo dao;
     //鏂规硶鍒楄〃
     private List<ServiceMetodInfoVO> metodInfoList;
     private ClassInfo query;
@@ -20,7 +19,6 @@
     public static class Builder {
         private Class entity;
         private String packageName;
-        private ClassInfo dao;
         private ClassInfo service;
         private ClassInfo query;
 
@@ -32,11 +30,6 @@
 
         public Builder setPackageName(String packageName) {
             this.packageName = packageName;
-            return this;
-        }
-
-        public Builder setDao(ClassInfo dao) {
-            this.dao = dao;
             return this;
         }
 
@@ -82,9 +75,6 @@
             if (packageName == null) {
                 throw new Exception("packageName涓嶈兘涓虹┖");
             }
-            if (dao == null) {
-                throw new Exception("dao涓嶈兘涓虹┖");
-            }
             if (service == null) {
                 throw new Exception("service涓嶈兘涓虹┖");
             }
@@ -102,7 +92,6 @@
                 throw new Exception("灏氭湭鎵惧埌涓婚敭灞炴��");
             }
             ServiceInfoVO serviceData = new ServiceInfoVO();
-            serviceData.setDao(dao);
             serviceData.setService(service);
             serviceData.setEntity(new ClassInfo(entity.getSimpleName(), entity.getName()));
             serviceData.setPackageName(packageName);
@@ -166,14 +155,6 @@
 
     public void setService(ClassInfo service) {
         this.service = service;
-    }
-
-    public ClassInfo getDao() {
-        return dao;
-    }
-
-    public void setDao(ClassInfo dao) {
-        this.dao = dao;
     }
 
     public List<ServiceMetodInfoVO> getMetodInfoList() {
diff --git a/src/main/java/org/yeshi/utils/mongo/MongodbBaseDao.java b/src/main/java/org/yeshi/utils/mongo/MongodbBaseDao.java
new file mode 100644
index 0000000..5226547
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/mongo/MongodbBaseDao.java
@@ -0,0 +1,106 @@
+package org.yeshi.utils.mongo;
+
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.data.mongodb.core.query.Criteria;
+import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.mongodb.core.query.Update;
+
+import javax.annotation.Resource;
+import java.lang.reflect.ParameterizedType;
+import java.util.List;
+
+/**
+ * @author Administrator
+ * @title: MongodbBaseDao
+ * @description: base dao
+ * @date 2021/10/13 15:03
+ */
+public class MongodbBaseDao<T> {
+
+    @Resource
+    protected MongoTemplate mongoTemplate;
+
+    /**
+     * 鎻掑叆鏁版嵁
+     *
+     * @param bean
+     * @return
+     */
+    public T save(T bean) {
+        mongoTemplate.save(bean);
+        return bean;
+    }
+
+    /**
+     * 鏍规嵁涓婚敭鏇存柊鏁版嵁
+     *
+     * @param query
+     * @param update
+     */
+    public void update(Query query, Update update) {
+        mongoTemplate.upsert(query, update, this.getEntityClass());
+    }
+
+    /**
+     * 鏌ヨ涓�涓暟鎹�
+     *
+     * @param query
+     * @return
+     */
+    public T findOne(Query query) {
+        return (T) mongoTemplate.findOne(query, this.getEntityClass());
+    }
+
+    /**
+     * 鏌ヨ澶氫釜鏁版嵁
+     *
+     * @param query
+     * @return
+     */
+    public List<T> findList(Query query) {
+        return mongoTemplate.find(query, this.getEntityClass());
+    }
+
+
+    /**
+     * 缁熻鏁伴噺
+     *
+     * @param query
+     * @return
+     */
+    public long count(Query query) {
+        return mongoTemplate.count(query, this.getEntityClass());
+    }
+
+    /**
+     * 涓婚敭鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    public T get(Object id) {
+        return (T) mongoTemplate.findById(id, this.getEntityClass());
+    }
+
+    /**
+     * 閫氳繃涓婚敭鍒犻櫎
+     *
+     * @param id
+     */
+    public void delete(Object id) {
+        Query query = Query.query(Criteria.where("id").is(id));
+        mongoTemplate.remove(query, getEntityClass());
+    }
+
+    public void delete(Query query) {
+        mongoTemplate.remove(query, getEntityClass());
+    }
+
+    @SuppressWarnings("unchecked")
+    protected Class<T> getEntityClass() {
+        Class<T> tClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass())
+                .getActualTypeArguments()[0];
+        return tClass;
+    }
+
+}
diff --git a/src/main/java/org/yeshi/utils/mybatis/BaseMapper.java b/src/main/java/org/yeshi/utils/mybatis/BaseMapper.java
new file mode 100644
index 0000000..c932abe
--- /dev/null
+++ b/src/main/java/org/yeshi/utils/mybatis/BaseMapper.java
@@ -0,0 +1,23 @@
+package org.yeshi.utils.mybatis;
+
+/**
+ * @author Administrator
+ * @title: BaseMapper
+ * @projectName utils
+ * @description: 鍩虹Mapper
+ * @date 2021/10/1315:02
+ */
+public interface BaseMapper<T> {
+
+    int deleteByPrimaryKey(Long id);
+
+    int insert(T record);
+
+    int insertSelective(T record);
+
+    T selectByPrimaryKey(Long id);
+
+    int updateByPrimaryKeySelective(T record);
+
+    int updateByPrimaryKey(T record);
+}
diff --git a/src/main/resources/generater/dao/mongoDBDao.template b/src/main/resources/generater/dao/mongoDBDao.template
index eeea6ba..32a5d1d 100644
--- a/src/main/resources/generater/dao/mongoDBDao.template
+++ b/src/main/resources/generater/dao/mongoDBDao.template
@@ -46,43 +46,37 @@
   }
 
   private Query getQuery(DaoQuery daoQuery){
-            List<Criteria> andList=new ArrayList<>();
-             <#list daoQueryColumnDataList as value>
-                 <#if (value.type!"") == "Date">
-                 if(daoQuery.min${value.columnName?cap_first}!=null){
-                      andList.add(Criteria.where("${value.columnName}").gte(daoQuery.min${value.columnName?cap_first}));
-                 }
-                 if(daoQuery.max${value.columnName?cap_first}!=null){
-                      andList.add(Criteria.where("${value.columnName}").lt(daoQuery.max${value.columnName?cap_first}));
-                 }
-                 <#else>
-                 if(daoQuery.${value.columnName}!=null){
-                   <#if (value.queryType!"") == "equal">
-                      andList.add(Criteria.where("${value.columnName}").is(daoQuery.${value.columnName}));
-                   <#else>
-                        andList.add(Criteria.where("${value.columnName}").regex(daoQuery.${value.columnName}));
-                   </#if>
-                 }
-                 </#if>
-            </#list>
-            Query query=new Query();
-            Criteria[]  ands=new Criteria[andList.size()];
-            andList.toArray(ands);
-            if(ands.length>0){
-                query.addCriteria(new Criteria().andOperator(ands));
-            }
-            return query;
+        List<Criteria> andList=new ArrayList<>();
+        <#list daoQueryColumnDataList as value>
+        if(daoQuery.${value.columnName}!=null){
+            <#if (value.queryType!"") == "equal">
+            andList.add(Criteria.where("${value.columnData.property}").is(daoQuery.${value.columnName}));
+            <#elseif (value.queryType!"") == "gt">
+            andList.add(Criteria.where("${value.columnData.property}").gt(daoQuery.${value.columnName}));
+            <#elseif (value.queryType!"") == "gte">
+            andList.add(Criteria.where("${value.columnData.property}").gte(daoQuery.${value.columnName}));
+            <#elseif (value.queryType!"") == "lt">
+            andList.add(Criteria.where("${value.columnData.property}").lt(daoQuery.${value.columnName}));
+            <#elseif (value.queryType!"") == "lte">
+            andList.add(Criteria.where("${value.columnData.property}").lte(daoQuery.${value.columnName}));
+            <#else>
+            andList.add(Criteria.where("${value.columnData.property}").regex(daoQuery.${value.columnName}));
+            </#if>
+        }
+        </#list>
+        Query query=new Query();
+        Criteria[]  ands=new Criteria[andList.size()];
+        andList.toArray(ands);
+        if(ands.length>0){
+            query.addCriteria(new Criteria().andOperator(ands));
+        }
+        return query;
   }
 
   public static class DaoQuery{
      <#if daoQueryColumnDataList??>
        <#list daoQueryColumnDataList as value>
-        <#if (value.type!"") == "Date">
-        public ${value.type} min${value.columnName?cap_first};
-        public ${value.type} max${value.columnName?cap_first};
-        <#else>
         public ${value.type} ${value.columnName};
-         </#if>
        </#list>
      </#if>
         public int start;
diff --git a/src/main/resources/generater/dao/mybatisDBDao.template b/src/main/resources/generater/dao/mybatisDBDao.template
index 3e7fd8a..3073e91 100644
--- a/src/main/resources/generater/dao/mybatisDBDao.template
+++ b/src/main/resources/generater/dao/mybatisDBDao.template
@@ -18,12 +18,7 @@
   public static class DaoQuery{
      <#if queryList??>
        <#list queryList as value>
-        <#if (value.type!"") == "Date">
-        public ${value.type} min${value.columnName?cap_first};
-        public ${value.type} max${value.columnName?cap_first};
-        <#else>
         public ${value.type} ${value.columnName};
-         </#if>
        </#list>
      </#if>
         public long start;
diff --git a/src/main/resources/generater/dao/mybatisDBXML.ftl b/src/main/resources/generater/dao/mybatisDBXML.ftl
index 6456016..fb90129 100644
--- a/src/main/resources/generater/dao/mybatisDBXML.ftl
+++ b/src/main/resources/generater/dao/mybatisDBXML.ftl
@@ -17,32 +17,32 @@
     </sql>
 
     <select id="selectByPrimaryKey" resultMap="BaseResultMap"
-            parameterType="java.lang.Long">
+            parameterType="${identify.type}">
         select
         <include refid="Base_Column_List"/>
         from ${table} where ${identify.column} = <#noparse>#{</#noparse>id, jdbcType=${identify.jdbcType}}
     </select>
 
     <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap"
-            parameterType="java.lang.Long">
+            parameterType="${identify.type}">
         select
         <include refid="Base_Column_List"/>
         from ${table} where ${identify.column} = <#noparse>#{</#noparse>id,jdbcType=${identify.jdbcType}} for update
     </select>
 
 
-    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
+    <delete id="deleteByPrimaryKey" parameterType="${identify.type}">
         delete from
         ${table} where ${identify.column} = <#noparse>#{</#noparse>id,jdbcType=${identify.jdbcType}}
     </delete>
     <insert id="insert"
-            parameterType="${entity.class}"
+            parameterType="${entity.clazz}"
             useGeneratedKeys="true" keyProperty="${identify.property}">
         insert into
         ${table}
         <trim prefix="(" suffix=")" suffixOverrides=",">
         <#list columnList as column>
-            ${column.column}},
+            ${column.column},
         </#list>
 
         </trim>
@@ -56,7 +56,7 @@
 
     </insert>
     <insert id="insertSelective"
-            parameterType="${entity.class}"
+            parameterType="${entity.clazz}"
             useGeneratedKeys="true" keyProperty="${identify.property}">
         insert into ${table}
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -74,7 +74,7 @@
         </trim>
     </insert>
     <update id="updateByPrimaryKey"
-            parameterType="${entity.class}">
+            parameterType="${entity.clazz}">
         update ${table}
         <set>
             <if test="${identify.property} != null">${identify.column} = <#noparse>#{</#noparse>${identify.property},jdbcType=${identify.jdbcType}},</if>
@@ -85,7 +85,7 @@
         where ${identify.column} = <#noparse>#{</#noparse>${identify.property},jdbcType=${identify.jdbcType}}
     </update>
     <update id="updateByPrimaryKeySelective"
-            parameterType="${entity.class}">
+            parameterType="${entity.clazz}">
         update ${table}
         <set>
               <#list columnList as column>
@@ -110,6 +110,18 @@
              <#if query.queryType=="contains">
                 and ${query.columnData.column} = '%<#noparse>#{</#noparse>query.${query.columnName}}%'
              </#if>
+              <#if query.queryType=="gt">
+                and ${query.columnData.column} > <#noparse>#{</#noparse>query.${query.columnName}}
+              </#if>
+              <#if query.queryType=="gte">
+                and ${query.columnData.column} >= <#noparse>#{</#noparse>query.${query.columnName}}
+              </#if>
+              <#if query.queryType=="lt">
+                and ${query.columnData.column} <![CDATA[<]]> <#noparse>#{</#noparse>query.${query.columnName}}
+              </#if>
+              <#if query.queryType=="lte">
+                and ${query.columnData.column} <![CDATA[<=]]> <#noparse>#{</#noparse>query.${query.columnName}}
+              </#if>
         </if>
         </#list>
     </sql>
diff --git a/src/main/resources/generater/service/queryVO.ftl b/src/main/resources/generater/service/queryVO.ftl
index 77045ac..f5a61fc 100644
--- a/src/main/resources/generater/service/queryVO.ftl
+++ b/src/main/resources/generater/service/queryVO.ftl
@@ -1,7 +1,6 @@
 package ${packageName};
 
 public class ${className} {
-
     //鎼滅储鍏抽敭璇�
     private String kw;
 
@@ -10,7 +9,7 @@
     }
 
     private void setKw(String kw){
-        this.kw=kw;
+        this.kw = kw;
     }
 
 
diff --git a/src/test/java/com/generater/GeneratorTest.java b/src/test/java/com/generater/GeneratorTest.java
index 33d9472..b08f64b 100644
--- a/src/test/java/com/generater/GeneratorTest.java
+++ b/src/test/java/com/generater/GeneratorTest.java
@@ -3,11 +3,13 @@
 import org.springframework.data.annotation.Id;
 import org.yeshi.utils.FileUtil;
 import org.yeshi.utils.FreemarkerUtils;
-import org.yeshi.utils.generater.SpringComponentGenerater;
+import org.yeshi.utils.generater.GeneraterManager;
+import org.yeshi.utils.generater.GeneraterUtil;
 import org.yeshi.utils.generater.entity.ClassInfo;
 import org.yeshi.utils.generater.entity.admin.AdminGeneraterInfo;
 import org.yeshi.utils.generater.mybatis.Column;
 import org.yeshi.utils.generater.mybatis.Table;
+import org.yeshi.utils.generater.params.DaoGeneraterParams;
 import org.yeshi.utils.generater.vo.ExceptionVO;
 import org.yeshi.utils.generater.vo.dao.MongoDBDaoVO;
 import org.yeshi.utils.generater.vo.dao.MyBatisDBDaoVO;
@@ -47,7 +49,7 @@
         //
 //        boolean match = Pattern.matches("^(https://){1}.*(\\.m3u8)$", "https://n1.szjal.cn/20210805/qnDXhXBa/index.m3u8123");
 //        System.out.println(match);
-        generateMybatisDao();
+        generater();
     }
 
     private static void generateAdminPage() throws Exception {
@@ -69,7 +71,7 @@
 
         Map<String, InputStream> map = new HashMap<>();
         for (String st : template) {
-            map.put(st, SpringComponentGenerater.class.getClassLoader().getResourceAsStream("generater/" + st));
+            map.put(st, GeneraterUtil.class.getClassLoader().getResourceAsStream("generater/" + st));
         }
         String result = FreemarkerUtils.generateInputStream(new FormUpdateInfoVO.Builder().setAdminInfo(info).build(), "admin/update.ftl", map);
         FileUtil.saveAsFileByte(result.getBytes("UTF-8"), "C:\\Users\\Administrator\\Documents\\HBuilderProjects\\LayuiTest\\form.html");
@@ -81,7 +83,7 @@
         ClassInfo dao = new ClassInfo("TestDao", "com.test.dao.TestDao");
         ClassInfo query = new ClassInfo("TestQuery", "com.test.query.TestQuery");
         ClassInfo service = new ClassInfo("TestService", "com.test.service.TestService");
-        ServiceInfoVO serviceInfoVO = new ServiceInfoVO.Builder().setDao(dao).setEntity(Entity.class).setPackageName("com.test.service").setQuery(query).setService(service).build();
+        ServiceInfoVO serviceInfoVO = new ServiceInfoVO.Builder().setEntity(Entity.class).setPackageName("com.test.service").setQuery(query).setService(service).build();
         String result = FreemarkerUtils.generateInputStream(serviceInfoVO, GeneratorTest.class.getClassLoader().getResourceAsStream("generater\\service\\service.template"));
         System.out.println(result);
     }
@@ -144,6 +146,11 @@
         System.out.println(result);
     }
 
+    private static void generater() throws Exception {
+        GeneraterManager.getInstance().init("D:\\workspace\\server\\utils\\src\\test\\java", TestEntity.class);
+        GeneraterManager.getInstance().createWholeFunction(new DaoGeneraterParams("com.generater.temp.dao", null), null, null);
+    }
+
 
     @Table("tb_test")
     public static class Entity {
diff --git a/src/test/java/com/generater/TestEntity.java b/src/test/java/com/generater/TestEntity.java
index efbe70f..eda83a7 100644
--- a/src/test/java/com/generater/TestEntity.java
+++ b/src/test/java/com/generater/TestEntity.java
@@ -1,6 +1,7 @@
 package com.generater;
 
 import org.springframework.data.annotation.Id;
+import org.springframework.data.mongodb.core.mapping.Document;
 import org.yeshi.utils.generater.annotation.admin.AdminController;
 import org.yeshi.utils.generater.annotation.admin.DaoQueryCondition;
 import org.yeshi.utils.generater.annotation.admin.Show;
@@ -10,12 +11,15 @@
 import org.yeshi.utils.generater.annotation.admin.form.Text;
 import org.yeshi.utils.generater.entity.admin.FormVerifyType;
 
+import java.util.Date;
+
 /**
  * @author Administrator
  * @title: TestEntity
  * @description: 娴嬭瘯entity
  * @date 2021/9/23 14:22
  */
+@Document(collection = "test")
 @AdminController(mapping = "admin/api/test", title = "娴嬭瘯", searchForm = TestEntity.SearchForm.class,jsonp = true)
 public class TestEntity {
     @Id
@@ -44,6 +48,9 @@
     @Show(order = 4, title = "鐪�")
     @Select(values = {"cq:閲嶅簡","js:姹熻嫃"}, title = "鐪�", apiParams = {"page:1", "pageSize:10", "id:\"test\""})
     private String province;
+
+    @DaoQueryCondition
+    private Date createTime;
 
 
     public String getId() {
@@ -94,6 +101,13 @@
         this.province = province;
     }
 
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
 
     public class SearchForm {
 
diff --git a/src/test/java/com/generater/TestEntity2.java b/src/test/java/com/generater/TestEntity2.java
index 4b0b516..e99b2ea 100644
--- a/src/test/java/com/generater/TestEntity2.java
+++ b/src/test/java/com/generater/TestEntity2.java
@@ -13,6 +13,8 @@
 import org.yeshi.utils.generater.mybatis.Column;
 import org.yeshi.utils.generater.mybatis.Table;
 
+import java.util.Date;
+
 /**
  * @author Administrator
  * @title: TestEntity
@@ -50,6 +52,11 @@
     @Show(order = 4, title = "鐪�")
     @Select(values = {"cq:閲嶅簡","js:姹熻嫃"}, title = "鐪�", apiParams = {"page:1", "pageSize:10", "id:\"test\""})
     private String province;
+
+    @DaoQueryCondition
+    private Date createTime;
+
+
 
     public String getId() {
         return id;
@@ -99,6 +106,14 @@
         this.province = province;
     }
 
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
     public class SearchForm {
 
         @Text(title = "寮�濮嬫棩鏈�", inputType = Text.Type.DATE)

--
Gitblit v1.8.0