(自用)生成前后端代码模版

44 篇文章 0 订阅
12 篇文章 0 订阅
package com.cn.entity;
/**
 * @description: 带排序属性的基础类
 * @author: yang_kai
 * @date: 2020/10/29
 */
public class BaseEntity {
    private String sort;

    public String getSort() {
        return sort;
    }

    public void setSort(String sort) {
        this.sort = sort;
    }
}

 

package com.util;

import com.cn.annotation.Description;
import com.cn.entity.*;
import org.apache.commons.lang.StringUtils;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 根据实体生成对应的结构
 *
 * @author yang_kai
 * @date 2019-10-12 09:44:23
 */
public class GenerateUtil {
    private static Pattern humpPattern = Pattern.compile("[A-Z]");
    public static void main(String[] args) {
        Class<?> oneClass = CertificateLevel.class;
        String entityUrl = "com.cn.entity";
        String daoUrl = "com.cn.mapper";
        String mapperUrl = "mapper";
        String serviceUrl = "com.cn.service";
        String serviceImplUrl = "com.cn.service.imp";
        String controllerUrl = "com.cn.controller";
        String pageUrl = "src/main/webapp/WEB-INF/jsp";
        if (checkEntity(oneClass)) {
            //自动生成后端代码
            //dao
            generateMapper(oneClass, entityUrl, daoUrl);
            //service
            generateService(oneClass, entityUrl, serviceUrl);
            //serviceImpl
            generateServiceImpl(oneClass, entityUrl, daoUrl, serviceUrl, serviceImplUrl);
            //xml
            generateMapperXml(oneClass, daoUrl, mapperUrl, 4);
            //controller
            generateController(oneClass, entityUrl, serviceUrl, controllerUrl);
            //自动生成前端代码
            generatePage(oneClass, pageUrl);
        } else {
        }
    }

    /**
     * 检车实体类
     *
     * @param clazz
     * @return
     */
    public static boolean checkEntity(Class<?> clazz) {
        Object obj = null;
        try {
            obj = clazz.newInstance();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    /**
     * Dao层
     *
     * @param clazz
     * @param entityUrl
     * @param daoUrl
     */
    public static void generateMapper(Class<?> clazz, String entityUrl, String daoUrl) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        StringBuffer str = new StringBuffer();
        str.append("package ").append(daoUrl).append(";\n");
        str.append("\n");
        str.append("import ").append(entityUrl).append(".").append(className).append(";\n");
        str.append("import org.apache.ibatis.annotations.Mapper;\n");
        str.append("import java.util.LinkedHashMap;\n");
        str.append("import java.util.List;\n");
        str.append("import java.util.Map;\n");
        str.append("\n" + "/**\n" + " * @description:\n" + " * @author: yang_kai\n" + " * @date: ").append(new Date()).append("\n").append(" */");
        str.append("@Mapper\n");
        str.append("public interface ").append(className).append("Mapper {\n");
        str.append("    List<").append("LinkedHashMap").append("> find").append(className).append("s(").append("Map").append(" ").append("params").append(");\n");
        str.append("\n");
        str.append("    List<").append("LinkedHashMap").append("> find").append(className).append("sEntity(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int find").append(className).append("sCount(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int update").append(className).append("(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int add").append(className).append("(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int add").append(className).append("ReturnId(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int delete").append(className).append("ById(String ").append(fields[0].getName()).append(");\n");
        str.append("}");
        //创建dao文件
        try {
            daoUrl = StringUtils.replace(daoUrl, ".", "/");
            daoUrl = "src/main/java/" + daoUrl;
            File file = new File(daoUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile = new File(daoUrl + "/" + className + "Mapper" + ".java");
            boolean status = generateFile.createNewFile();
            if (status) {
                Writer out = new FileWriter(generateFile);
                out.write(str.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * service层
     *
     * @param clazz
     * @param entityUrl
     * @param serviceUrl
     */
    public static void generateService(Class<?> clazz, String entityUrl, String serviceUrl) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        StringBuffer str = new StringBuffer();
        str.append("package ").append(serviceUrl).append(";\n");
        str.append("\n");
        str.append("import ").append(entityUrl).append(".").append(className).append(";\n");
        str.append("import java.util.LinkedHashMap;\n");
        str.append("import java.util.List;\n");
        str.append("import java.util.Map;\n");
        str.append("\n" + "/**\n" + " * @description:\n" + " * @author: yang_kai\n" + " * @date: ").append(new Date()).append("\n").append(" */");
        str.append("public interface ").append(className).append("Service {\n");
        str.append("    List<").append("LinkedHashMap").append("> find").append(className).append("s(").append("Map").append(" ").append("params").append(");\n");
        str.append("\n");
        str.append("    List<").append("LinkedHashMap").append("> find").append(className).append("sEntity(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int find").append(className).append("sCount(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int update").append(className).append("(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int add").append(className).append("(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int add").append(className).append("ReturnId(").append(className).append(" ").append(classNameL).append(");\n");
        str.append("\n");
        str.append("    int delete").append(className).append("ById(String ").append(fields[0].getName()).append(");\n");
        str.append("}");
        //创建service文件
        try {
            serviceUrl = StringUtils.replace(serviceUrl, ".", "/");
            serviceUrl = "src/main/java/" + serviceUrl;
            File file = new File(serviceUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile = new File(serviceUrl + "/" + className + "Service" + ".java");
            boolean status = generateFile.createNewFile();
            if (status) {
                Writer out = new FileWriter(generateFile);
                out.write(str.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * ServiceImpl
     *
     * @param clazz
     * @param entityUrl
     * @param daoUrl
     * @param serviceUrl
     * @param serviceImplUrl
     */
    public static void generateServiceImpl(Class<?> clazz, String entityUrl, String daoUrl, String serviceUrl, String serviceImplUrl) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        StringBuffer str = new StringBuffer();
        str.append("package ").append(serviceImplUrl).append(";\n");
        str.append("\n");
        str.append("import ").append(entityUrl).append(".").append(className).append(";\n");
        str.append("import ").append(daoUrl).append(".").append(className).append("Mapper;\n");
        str.append("import ").append(serviceUrl).append(".").append(className).append("Service;\n");
        str.append("import org.springframework.stereotype.Service;\n");
        str.append("\n");
        str.append("import javax.annotation.Resource;\n");
        str.append("import java.util.LinkedHashMap;\n");
        str.append("import java.util.List;\n");
        str.append("import java.util.Map;\n");
        str.append("\n");
        str.append("/**\n");
        str.append(" * @description:\n");
        str.append(" * @author: yang_kai\n");
        str.append(" * @date: ").append(new Date()).append("\n");
        str.append(" */\n");
        str.append("@Service\n");
        str.append("public class ").append(className).append("Service").append(firstCharToLORU(StringUtils.split(serviceImplUrl, ".")[StringUtils.split(serviceImplUrl, ".").length - 1], 2)).append(" implements ").append(className).append("Service {\n");
        str.append("    @Resource\n");
        str.append("    private ").append(className).append("Mapper ").append(classNameL).append("Mapper;\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public List<").append("LinkedHashMap").append("> find").append(className).append("s(").append("Map").append(" ").append("params").append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.find").append(className).append("s(").append("params").append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public List<").append("LinkedHashMap").append("> find").append(className).append("sEntity(").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.find").append(className).append("sEntity(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public int find").append(className).append("sCount(").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.find").append(className).append("sCount(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public int update").append(className).append("(").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.update").append(className).append("(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public int add").append(className).append("(").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.add").append(className).append("(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public int add").append(className).append("ReturnId(").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.add").append(className).append("ReturnId(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @Override\n");
        str.append("    public int delete").append(className).append("ById(String ").append(fields[0].getName()).append(") {\n");
        str.append("        return ").append(classNameL).append("Mapper.delete").append(className).append("ById(").append(fields[0].getName()).append(");\n");
        str.append("    }\n");
        str.append("}\n");
        //创建ServiceImpl文件
        try {
            String Impl = firstCharToLORU(StringUtils.split(serviceImplUrl, ".")[StringUtils.split(serviceImplUrl, ".").length - 1], 2);
            serviceImplUrl = StringUtils.replace(serviceImplUrl, ".", "/");
            serviceImplUrl = "src/main/java/" + serviceImplUrl;
            File file = new File(serviceImplUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile = new File(serviceImplUrl + "/" + className + "Service" + Impl + ".java");
            boolean status = generateFile.createNewFile();
            if (status) {
                Writer out = new FileWriter(generateFile);
                out.write(str.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * controller
     *
     * @param clazz
     * @param entityUrl
     * @param serviceUrl
     * @param controllerUrl
     */
    public static void generateController(Class<?> clazz, String entityUrl, String serviceUrl, String controllerUrl) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        //类注解
        Description classDescription = clazz.getAnnotation(Description.class);
        StringBuffer str = new StringBuffer();
        str.append("package ").append(controllerUrl).append(";\n");
        str.append("\n");
        str.append("import com.alibaba.fastjson.JSON;\n");
        str.append("import ").append(entityUrl).append(".").append(className).append(";\n");
        str.append("import ").append(serviceUrl).append(".").append(className).append("Service;\n");
        str.append("import com.cn.annotation.AspectLog;\n");
        str.append("import com.github.pagehelper.PageHelper;\n");
        str.append("import com.github.pagehelper.PageInfo;\n");
        str.append("import org.springframework.web.bind.annotation.*;\n");
        str.append("import org.springframework.web.servlet.ModelAndView;\n");
        str.append("import org.springframework.ui.Model;\n");
        str.append("import javax.annotation.Resource;\n");
        str.append("import java.util.HashMap;\n");
        str.append("import java.util.LinkedHashMap;\n");
        str.append("import java.util.Map;\n");
        str.append("\n");
        str.append("/**\n");
        str.append(" * @description:\n");
        str.append(" * @author: yang_kai\n");
        str.append(" * @date: ").append(new Date()).append("\n");
        str.append(" */\n");
        str.append("@RestController\n");
        str.append("@AspectLog\n");
        str.append("public class ").append(className).append("Controller {\n");
        str.append("    @Resource\n");
        str.append("    private ").append(className).append("Service ").append(classNameL).append("Service;\n");
        str.append("\n");
        str.append("    @RequestMapping(\"display").append(className).append("Page\")\n");
        str.append("    public ModelAndView display").append(className).append("Page() {\n");
        str.append("        return new ModelAndView(\"").append(className).append("/display").append(className).append("\");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @PostMapping(\"find" + className + "s\")\n");
        str.append("    public Object find" + className + "s(@RequestParam Map params) {\n");
        str.append("        return " + classNameL + "Service.find" + className + "s(params);\n");
        str.append("    }\n");
        str.append("    @GetMapping(\"find").append(className).append("s\")\n");
        str.append("    public Object find").append(className).append("s(int page, int limit,").append(className).append(" ").append(classNameL).append(") {\n");
        str.append("        PageHelper.startPage(page, limit);\n");
        str.append("        PageInfo<").append("LinkedHashMap").append("> pageInfo = new PageInfo<>(").append(classNameL).append("Service.find").append(className).append("sEntity(").append(classNameL).append("));\n");
        str.append("        Map map = new HashMap(11);\n");
        str.append("        map.put(\"code\", 0);\n");
        str.append("        map.put(\"msg\", \"连接成功\");\n");
        str.append("        map.put(\"data\", pageInfo.getList());\n");
        str.append("        map.put(\"count\", pageInfo.getTotal());\n");
        str.append("        return map;\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @GetMapping(\"add").append(className).append("Page\")\n");
        str.append("    public ModelAndView add").append(className).append("Page(){\n");
        str.append("        return new ModelAndView(\"").append(className).append("/add").append(className).append("\");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @GetMapping(\"view").append(className).append("Page\")\n");
        str.append("    public ModelAndView view").append(className).append("Page(@RequestParam Map params, Model model){\n");
        str.append("        model.addAttribute(\""+className+"\","+classNameL+"Service.find"+className+"s(params).get(0));\n");
        str.append("        return new ModelAndView(\"").append(className).append("/view").append(className).append("\");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @GetMapping(\"edit").append(className).append("Page\")\n");
        str.append("    public ModelAndView edit").append(className).append("Page(@RequestParam Map params, Model model){\n");
        str.append("        model.addAttribute(\""+className+"\","+classNameL+"Service.find"+className+"s(params).get(0));\n");
        str.append("        return new ModelAndView(\"").append(className).append("/edit").append(className).append("\");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @PostMapping(\"edit").append(className).append("\")\n");
        str.append("    public int edit").append(className).append("(@RequestParam ").append("Map<String, Object>").append(" ").append("params").append("){\n");
        str.append("        ").append(className).append(" ").append(classNameL).append(" = JSON.parseObject(JSON.toJSONString(params), ").append(className).append(".class);\n");
        str.append("        return ").append(classNameL).append("Service.update").append(className).append("(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @PostMapping(\"add").append(className).append("\")\n");
        str.append("    public int add").append(className).append("(@RequestParam ").append("Map<String, Object>").append(" ").append("params").append("){\n");
        str.append("        ").append(className).append(" ").append(classNameL).append(" = JSON.parseObject(JSON.toJSONString(params), ").append(className).append(".class);\n");
        for (Field f : fields) {
            Description fieldDescription = f.getAnnotation(Description.class);
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.status()) {
                    str.append("        " + classNameL + ".set" + firstCharToLORU(property, 2) + "(" + fieldDescription.available() + ");\n");
                } else {
                }
            }
        }
        str.append("        return ").append(classNameL).append("Service.add").append(className).append("(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("\n");
        str.append("    @PostMapping(\"delete").append(className).append("\")\n");
        str.append("    public int delete").append(className).append("(@RequestParam Map<String, Object> ").append("params").append("){\n");
        str.append("        ").append(className).append(" ").append(classNameL).append(" = JSON.parseObject(JSON.toJSONString(params), ").append(className).append(".class);\n");
        for (Field f : fields) {
            Description fieldDescription = f.getAnnotation(Description.class);
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.status()) {
                    str.append("        " + classNameL + ".set" + firstCharToLORU(property, 2) + "(" + fieldDescription.unavailable() + ");\n");
                } else {
                }
            }
        }
        str.append("        return ").append(classNameL).append("Service.update").append(className).append("(").append(classNameL).append(");\n");
        str.append("    }\n");
        str.append("}\n");
        //创建controller文件
        try {
            controllerUrl = StringUtils.replace(controllerUrl, ".", "/");
            controllerUrl = "src/main/java/" + controllerUrl;
            File file = new File(controllerUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile = new File(controllerUrl + "/" + className + "Controller" + ".java");
            boolean status = generateFile.createNewFile();
            if (status) {
                Writer out = new FileWriter(generateFile);
                out.write(str.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 生成XML sql映射文件(包含基础增删改查)(type=1:小写下划线;type=2:大写下划线;type=3:小写;type=4:大写)
     *
     * @param clazz
     * @param daoUrl
     * @param mapperUrl
     */
    public static void generateMapperXml(Class<?> clazz, String daoUrl, String mapperUrl, Integer type) {
        String className = clazz.getSimpleName();
        /*开始构建内容*/
        StringBuffer str = new StringBuffer("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n");
        str.append("<mapper namespace=\"");
        str.append(daoUrl);
        str.append(".");
        str.append(clazz.getSimpleName());
        str.append("Mapper\">\n");
        //resultMap
        str.append(getMapperXml(clazz, type));
        //select
        str.append(getSelect(clazz, type));
        //selectCount
        str.append(getSelectCount(clazz, type));
        //update
        str.append(getUpdate(clazz, type));
        //insert
        str.append(getInsert(clazz, type));
        //insertReturnId
        str.append(getInsertReturnId(clazz, type));
        //delete
        str.append(getDelete(clazz, type));
        str.append("\n</mapper>");

        //创建mapperXML文件
        try {
            mapperUrl = "src/main/resources/" + mapperUrl;
            File file = new File(mapperUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile = new File(mapperUrl + "/" + className + "Mapper" + ".xml");
            boolean status = generateFile.createNewFile();
            if (status) {
                Writer out = new FileWriter(generateFile);
                out.write(str.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取ResultMap
     *
     * @param clazz 实体类的Class
     * @return String
     */
    public static String getMapperXml(Class<?> clazz, Integer type) {
        String className = clazz.getSimpleName();
        String resultMapId = firstCharToLORU(className, 1) + "Map";
        String pkgName = clazz.getName();

        StringBuffer resultMap = new StringBuffer();
        resultMap.append("    <resultMap id=\"");
        resultMap.append(resultMapId);
        resultMap.append("\" type=\"");
        resultMap.append(pkgName);
        resultMap.append("\">\n");

        Field[] fields = clazz.getDeclaredFields();
        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            }
            resultMap.append("        <result column=\"");
            resultMap.append(property2Column(property, type));
            resultMap.append("\" jdbcType=\"");
            resultMap.append(javaType2jdbcType(javaType.toLowerCase()));
            resultMap.append("\" property=\"");
            resultMap.append(property);
            resultMap.append("\" />\n");
        }
        resultMap.append("    </resultMap>");
        return resultMap.toString();
    }

    /**
     * 查询
     *
     * @param clazz
     * @return
     */
    public static String getSelect(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //得到类别名
        String nameR = classNameL.substring(0, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        /*获取所有的列明集合字符串*/
        List<String> cols = new ArrayList<>();
        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            }
            cols.add(nameR+"."+property2Column(property, type)+" AS \""+property+"\"");
        }
        StringBuffer str = new StringBuffer();
        str.append("\n    <!-- 查询信息返回-resultMap -->\n");
        str.append("    <select id=\"find").append(className).append("s\" parameterType=\"").append("java.util.Map").append("\" resultType=\"").append("java.util.LinkedHashMap").append("\">\n");
        str.append("        SELECT\n");
        str.append("        ").append(StringUtils.join(cols, ",")).append("\n");
        str.append("        FROM\n");
        str.append("        ").append(property2Column(classNameL, type)).append(" ").append(nameR).append("\n");
        str.append("        <where>\n");
        str.append("            1=1\n");
        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if ("java.lang.String".equals(javaType)) {
                    str.append("            <if test='").append(property).append(" !=null and ").append(property).append(" !=\"\"'>\n").append("                AND ").append(nameR+"."+property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
                } else {
                    str.append("            <if test='").append(property).append(" !=null'>\n").append("                AND ").append(nameR+"."+property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
                }
            }
        }
        str.append("        </where>\n");
        str.append("        <if test='sort !=null and sort !=\"\" and !sort.contains(\";\")'>\n");
        str.append("            order by "+nameR+"."+"${sort}\n");
        str.append("        </if>\n");
        str.append("    </select>\n");

        str.append("    <!-- 查询信息返回-实体类 -->\n");
        str.append("    <select id=\"find").append(className).append("sEntity\" parameterType=\"").append(pkgName).append("\" resultType=\"").append("java.util.LinkedHashMap").append("\">\n");
        str.append("        SELECT\n");
        str.append("        ").append(StringUtils.join(cols, ",")).append("\n");
        str.append("        FROM\n");
        str.append("        ").append(property2Column(classNameL, type)).append(" ").append(nameR).append("\n");
        str.append("        <where>\n");
        str.append("            1=1\n");
        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if ("java.lang.String".equals(javaType)) {
                    str.append("            <if test='").append(property).append(" !=null and ").append(property).append(" !=\"\"'>\n").append("                AND ").append(nameR+"."+property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
                } else {
                    str.append("            <if test='").append(property).append(" !=null'>\n").append("                AND ").append(nameR+"."+property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
                }
            }
        }
        str.append("        </where>\n");
        str.append("        <if test='sort !=null and sort !=\"\" and !sort.contains(\";\")'>\n");
        str.append("            order by "+nameR+"."+"${sort}\n");
        str.append("        </if>\n");
        str.append("    </select>");
        return str.toString();
    }

    /**
     * 查询条数
     *
     * @param clazz
     * @return
     */
    public static String getSelectCount(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        StringBuffer str = new StringBuffer();
        str.append("\n    <!-- 查询信息条数 -->\n");
        str.append("    <select id=\"find").append(className).append("sCount\" parameterType=\"").append(pkgName).append("\" resultType=\"int\">\n");
        str.append("        SELECT\n");
        str.append("        ").append("COUNT(").append(property2Column(fields[0].getName(), type)).append(")").append("\n");
        str.append("        FROM\n");
        str.append("        ").append(property2Column(classNameL, type)).append("\n");
        str.append("        <where>\n");
        str.append("            1=1\n");
        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            }
            if ("java.lang.String".equals(javaType)) {
                str.append("            <if test='").append(property).append(" !=null and ").append(property).append(" !=\"\"'>\n").append("                AND ").append(property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
            } else {
                str.append("            <if test='").append(property).append(" !=null'>\n").append("                AND ").append(property2Column(property, type)).append(" = #{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}\n").append("            </if>\n");
            }
        }
        str.append("        </where>\n").append("    </select>");
        return str.toString();
    }

    /**
     * 更新
     *
     * @param clazz
     * @return
     */
    public static String getUpdate(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        StringBuffer str = new StringBuffer();
        str.append("\n    <!--更新-->\n" + "    <update id=\"update").append(className).append("\" parameterType=\"").append(pkgName).append("\">\n").append("        update ").append(property2Column(classNameL, type)).append("\n").append("        <set>\n");

        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if ("java.lang.String".equals(javaType)) {
                    str.append("            <if test='").append(property).append(" !=null and ").append(property).append(" !=\"\"'>\n").append("                ").append(property2Column(property, type)).append("=#{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("},\n").append("            </if>\n");
                } else {
                    str.append("            <if test='").append(property).append(" !=null'>\n").append("                ").append(property2Column(property, type)).append("=#{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("},\n").append("            </if>\n");
                }
            }

        }
        str.append("        </set>\n").append("        where ").append(property2Column(fields[0].getName(), type)).append("=#{").append(fields[0].getName()).append(",jdbcType=").append(javaType2jdbcType(fields[0].getType().getName().toLowerCase())).append("}\n").append("    </update>");
        return str.toString();
    }

    /**
     * 新增
     *
     * @param clazz
     * @param type
     * @return
     */
    public static String getInsert(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        /*获取所有的列明集合字符串*/
        List<String> cols = new ArrayList<>();
        List<String> valList = new ArrayList<>();

        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                cols.add(property2Column(property, type));
                valList.add(new StringBuffer("#{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}").toString());
            }
        }
        StringBuffer str = new StringBuffer();
        str.append("\n    <!--增加-->\n");
        str.append("    <insert id=\"add").append(className).append("\"  parameterType=\"").append(pkgName).append("\">\n").append("        insert into ").append(property2Column(classNameL, type)).append("(").append(StringUtils.join(cols, ",")).append(") values").append("(").append(StringUtils.join(valList, ",")).append(")\n").append("    </insert>");
        return str.toString();
    }
    /**
     * 新增
     *
     * @param clazz
     * @param type
     * @return
     */
    public static String getInsertReturnId(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        /*获取所有的列明集合字符串*/
        List<String> cols = new ArrayList<>();
        List<String> valList = new ArrayList<>();

        for (Field f : fields) {
            String property = f.getName();
            String javaType = f.getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                cols.add(property2Column(property, type));
                valList.add(new StringBuffer("#{").append(property).append(",jdbcType=").append(javaType2jdbcType(javaType.toLowerCase())).append("}").toString());
            }
        }
        StringBuffer str = new StringBuffer();
        str.append("\n    <!--增加-->\n");
        str.append("    <insert id=\"add").append(className).append("ReturnId\"  parameterType=\"").append(pkgName).append("\" useGeneratedKeys=\"true\" keyProperty=\""+fields[0].getName()+"\" keyColumn=\""+property2Column(fields[0].getName(), type)+"\">\n").append("        insert into ").append(property2Column(classNameL, type)).append("(").append(StringUtils.join(cols, ",")).append(") values").append("(").append(StringUtils.join(valList, ",")).append(")\n").append("    </insert>");
        return str.toString();
    }
    /**
     * 删除
     *
     * @param clazz
     * @param type
     * @return
     */
    public static String getDelete(Class<?> clazz, Integer type) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        //构建内容
        StringBuffer str = new StringBuffer();
        str.append("\n    <!--删除-->\n");
        str.append("    <delete id=\"delete").append(className).append("ById\">\n");
        str.append("        delete from ").append(property2Column(classNameL, type)).append("\n");
        str.append("        <where>\n");
        str.append("            ").append(property2Column(fields[0].getName(), type)).append("=#{").append(fields[0].getName()).append(",jdbcType=").append(javaType2jdbcType(fields[0].getType().getName().toLowerCase())).append("}\n");
        str.append("        </where>\n");
        str.append("    </delete>");
        return str.toString();
    }

    /*前端*/
    public static void generatePage(Class<?> clazz, String pageUrl) {
        //类名
        String className = clazz.getSimpleName();
        //实体类类路径+类名
        String pkgName = clazz.getName();
        //类名首字母小写
        String classNameL = firstCharToLORU(className, 1);
        //获取类属性数组
        Field[] fields = clazz.getDeclaredFields();
        //类注解
        Description classDescription = clazz.getAnnotation(Description.class);
        String name = classDescription.value();
        //构建内容
        String head = "<%@ page language=\"java\" contentType=\"text/html; charset=utf-8\" pageEncoding=\"utf-8\" %>\n" +
                "<%@ taglib uri=\"http://java.sun.com/jsp/jstl/core\" prefix=\"c\" %>\n" +
                "<!DOCTYPE html>\n" +
                "<html>\n" +
                "<head>\n" +
                "    <meta charset=\"UTF-8\">\n" +
                "    <meta http-equiv=Content-Type content=\"text/html;charset=utf-8\">\n" +
                "    <meta name=\"renderer\" content=\"webkit|ie-comp|ie-stand\">\n" +
                "    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n" +
                "    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0\">\n";
        StringBuffer displayPage = new StringBuffer(head);
        displayPage.append("    <title>" + name + "</title>\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/font.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/weadmin.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"layui/css/layui.css\" media=\"all\">\n" +
                "</head>\n" +
                "<body>\n" +
                "<div class=\"weadmin-nav\">\n" +
                "\t\t\t<span class=\"layui-breadcrumb\">\n" +
                "\t\t\t\t<a href=\"\">首页</a>\n" +
                "                <a href=\"\">" + name + "管理</a>\n" +
                "\t\t\t\t<a>\n" +
                "\t\t\t\t\t<cite>" + name + "</cite>\n" +
                "\t\t\t\t</a>\n" +
                "\t\t\t</span>\n" +
                "    <a class=\"layui-btn layui-btn-sm\" style=\"line-height:1.6em;margin-top:3px;float:right\"\n" +
                "       href=\"javascript:location.replace(location.href);\" title=\"刷新\">\n" +
                "        <i class=\"layui-icon\" style=\"line-height:30px\">&#xe9aa;</i>\n" +
                "    </a>\n" +
                "</div>\n" +
                "<div class=\"main-body\">\n" +
                "    <div class=\"layui-row\">\n" +
                "        <form id=\"searchForm\" class=\"layui-form\">\n");
        int number=0;
        for (int i = 1; i < fields.length; i++) {
            Description fieldDescription = fields[i].getAnnotation(Description.class);
            String property = fields[i].getName();
            String javaType = fields[i].getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.hide()) {
                } else {
                    if(number==0){
                        displayPage.append("            <div class=\"layui-form-item\" style=\"margin: 0;padding: 0\">\n");
                    }
                    displayPage.append("                <div class=\"layui-inline\">\n" +
                            "                    <label class=\"layui-form-label\" style=\"width: 150px\">" + fieldDescription.value() + ":</label>\n" +
                            "                    <div class=\"layui-input-inline\">\n" +
                            "                        <input type=\"text\" id=\"" + property + "\" name=\"" + property + "\"placeholder=\"请输入" + fieldDescription.value() + "\"autocomplete=\"off\" class=\"layui-input\">\n" +
                            "                    </div>\n" +
                            "                </div>\n");
                    if(number==3){
                        displayPage.append("            </div>\n");
                        number=0;
                    }else {
                        number++;
                    }
                }
            }
        }
        displayPage.append("                <div class=\"layui-inline\" style=\"float: right\">\n" +
                "                    <div class=\"layui-input-inline\" style=\"float: right;width: 300px;text-align:right\">\n" +
                "                        <button class=\"layui-btn layui-btn-sm\" lay-submit lay-filter=\"form\" type=\"submit\">搜索</button>\n" +
                "                        <button type=\"reset\" class=\"layui-btn layui-btn-primary layui-btn-sm\">重置</button>\n" +
                "                        <button type=\"button\" class=\"layui-btn layui-bg-blue layui-btn-sm\" onclick=\"add" + className + "()\">新增" + name + "</button>\n" +
                "                    </div>\n" +
                "                </div>\n" +
                "            </div>\n" +
                "            <input type=\"text\" name=\"k_version_1234567890\" value=\"\" style=\"display: none\">;\n" +
                "        </form>\n" +
                "    </div>\n" +
                "    <div class=\"layui-row\" style=\"overflow: hidden\">\n" +
                "        <table id=\"tableData\" lay-filter=\"tableData\"></table>\n" +
                "    </div>" +
                "</div>\n" +
                "<script src=\"js/jquery.1.11.3.min.js\"></script>\n" +
                "<script src=\"js/heightresize.js\"></script>\n" +
                "<script src=\"layui/layui.all.js\"></script>\n" +
                "<script src=\"js/yk_util.js\"></script>\n" +
                "<script type=\"text/html\" id=\"barDemo\">\n" +
                "    <a class=\"layui-btn layui-btn-xs\" lay-event=\"detail\">查看</a>\n" +
                "    <a class=\"layui-btn layui-btn-xs\" lay-event=\"edit\">编辑</a>\n" +
                "    <a class=\"layui-btn layui-btn-danger layui-btn-xs\" lay-event=\"del\">删除</a>\n" +
                "    <!-- 这里同样支持 laytpl 语法,如: -->\n" +
                "    {{#  if(d.auth > 2){ }}\n" +
                "    <a class=\"layui-btn layui-btn-xs\" lay-event=\"check\">审核</a>\n" +
                "    {{#  } }}\n" +
                "</script>\n" +
                "<script type=\"text/html\" id=\"xuHao\">\n" +
                "    {{d.LAY_TABLE_INDEX+1}}\n" +
                "</script>\n" +
                "<script>\n" +
                "    var ctx = '${pageContext.request.contextPath}';//获取项目路径\n" +
                "    var tableCol = [[\n" +
                "        {title: '序号', templet: '#xuHao', align: 'center', hide: true}\n");
        for (int i = 0; i < fields.length; i++) {
            String property = fields[i].getName();
            String javaType = fields[i].getType().getName();
            Description description = fields[i].getAnnotation(Description.class);
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                displayPage.append("        , {field: '" + property + "', title: '" + description.value() + "', align: 'center', hide: " + description.hide() + "}\n");
            }
        }
        displayPage.append("        , {title: '操作', align: 'center', toolbar: '#barDemo', fixed: 'right', width: '200'}\n" +
                "    ]];\n" +
                "    //初始化生成数据表格\n" +
                "    generateTableData('#tableData', ctx, 'find" + className + "s', {}, tableCol);\n" +
                "\n" +
                "    //监听表单提交完成数据搜索功能\n" +
                "    formK.on('submit(form)', function (data) {\n" +
                "        generateTableData('#tableData', ctx, 'find" + className + "s', data.field, tableCol);\n" +
                "        return false;\n" +
                "    });\n" +
                "    //监听工具条查看,修改,删除\n" +
                "    tableK.on('tool(tableData)', function (obj) {\n" +
                "        var data = obj.data;\n" +
                "        if (obj.event === 'detail') {\n" +
                "            layerK.open({\n" +
                "                title: '查看',\n" +
                "                type: 2,\n" +
                "                anim: 5,\n" +
                "                isOutAnim: true,\n" +
                "                shadeClose: true,\n" +
                "                area: ['600px', '70%'],\n" +
                "                content: ctx + '/view" + className + "Page?"+fields[0].getName()+"='+data."+fields[0].getName()+",\n" +
                "                btn: ['确定', '返回'],\n" +
                "                btn1: function (index, layero) {\n" +
                "                    var win = $(layero).find(\"iframe\")[0].contentWindow;\n" +
                "                },\n" +
                "                btn2: function (index, layero) {\n" +
                "                },\n" +
                "                cancel: function (index, layero) {\n" +
                "                }\n" +
                "            });\n" +
                "        } else if (obj.event === 'del') {\n" +
                "            layerK.confirm('真的删除么', function (index) {\n" +
                "                AjaxK(ctx, 'delete" + className + "', {'" + fields[0].getName() + "': data." + fields[0].getName() + "}, function (AjaxData) {\n" +
                "                    if (AjaxData > 0) {\n" +
                "                        layerK.msg(\"删除成功!\");\n" +
                "                        layerK.close(index);//关闭确认框\n" +
                "                        showInit(formToJson($('#searchForm').serializeArray()));\n" +
                "                    } else {\n" +
                "                        layerK.msg(\"删除失败!\");\n" +
                "                        layerK.close(index);//关闭确认框\n" +
                "                    }\n" +
                "                }, 1);\n" +
                "            });\n" +
                "        } else if (obj.event === 'edit') {\n" +
                "            layerK.open({\n" +
                "                title: '编辑',\n" +
                "                type: 2,\n" +
                "                anim: 5,\n" +
                "                isOutAnim: true,\n" +
                "                area: ['600px', '70%'],\n" +
                "                content: ctx + '/edit" + className + "Page?"+fields[0].getName()+"='+data."+fields[0].getName()+",\n" +
                "                btn: ['保存', '取消'],\n" +
                "                end: function () {\n" +
                "                },\n" +
                "                btn1: function (index, layero) {\n" +
                "                    var win = $(layero).find(\"iframe\")[0].contentWindow;\n" +
                "                    win.layui.form.on('submit(submitButton)', function (data) {\n" +
                "                        AjaxK(ctx, 'edit" + className + "', data.field, function (AjaxData) {\n" +
                "                            if (AjaxData > 0) {\n" +
                "                                layerK.close(index);\n" +
                "                                var loading = layerK.load(1);\n" +
                "                                setTimeout(function () {\n" +
                "                                    layerK.close(loading);\n" +
                "                                    layerK.msg(\"保存成功!\");\n" +
                "                                    showInit(formToJson($('#searchForm').serializeArray()));\n" +
                "                                }, 500);\n" +
                "                            } else {\n" +
                "                            }\n" +
                "                        }, 1);\n" +
                "                        return false;\n" +
                "                    });\n" +
                "                    win.$('#submitButton').click();\n" +
                "                },\n" +
                "                btn2: function (index, layero) {\n" +
                "                },\n" +
                "                cancel: function (index, layero) {\n" +
                "                }\n" +
                "            });\n" +
                "        }\n" +
                "    });\n" +
                "    //监听行事件(单击事件为:row)\n" +
                "    tableK.on('rowDouble(tableData)', function (obj) {\n" +
                "        var data = obj.data;\n" +
                "        layerK.open({\n" +
                "            title: '查看',\n" +
                "            type: 2,\n" +
                "            anim: 5,\n" +
                "            isOutAnim: true,\n" +
                "            shadeClose: true,\n" +
                "            area: ['600px', '70%'],\n" +
                "            content: ctx + '/view" + className + "Page?"+fields[0].getName()+"='+data."+fields[0].getName()+",\n" +
                "            btn: ['确定', '返回'],\n" +
                "            end: function () {\n" +
                "            },\n" +
                "            btn1: function (index, layero) {\n" +
                "                var win = $(layero).find(\"iframe\")[0].contentWindow;\n" +
                "            },\n" +
                "            btn2: function (index, layero) {\n" +
                "            },\n" +
                "            cancel: function (index, layero) {\n" +
                "            }\n" +
                "        });\n" +
                "    });\n" +
                "\n" +
                "    //新增\n" +
                "    function add" + className + "() {\n" +
                "        layerK.open({\n" +
                "            title: '新增',\n" +
                "            type: 2,\n" +
                "            anim: 5,\n" +
                "            isOutAnim: true,\n" +
                "            area: ['600px', '70%'],\n" +
                "            content: ctx + '/add" + className + "Page',\n" +
                "            btn: ['新增', '取消'],\n" +
                "            end: function () {\n" +
                "            },\n" +
                "            btn1: function (index, layero) {\n" +
                "                var win = $(layero).find(\"iframe\")[0].contentWindow;\n" +
                "                win.layui.form.on('submit(submitButton)', function (data) {\n" +
                "                    AjaxK(ctx, 'add" + className + "', data.field, function (AjaxData) {\n" +
                "                        if (AjaxData > 0) {\n" +
                "                            layerK.close(index);\n" +
                "                            var loading = layerK.load(1);\n" +
                "                            setTimeout(function () {\n" +
                "                                layerK.close(loading);\n" +
                "                                layerK.msg(\"添加成功!\");\n" +
                "                                showInit(formToJson($('#searchForm').serializeArray()));\n" +
                "                            }, 500);\n" +
                "                        } else {\n" +
                "                        }\n" +
                "                    }, 1);\n" +
                "                    return false;\n" +
                "                });\n" +
                "                win.$('#submitButton').click();\n" +
                "            },\n" +
                "            btn2: function (index, layero) {\n" +
                "            },\n" +
                "            cancel: function (index, layero) {\n" +
                "            }\n" +
                "        });\n" +
                "    }\n" +
                "\n" +
                "    //表格数据重载\n" +
                "    function showInit(where) {\n" +
                "        generateTableData('#tableData', ctx, 'find" + className + "s', where, tableCol)\n" +
                "    }\n" +
                "    function timeOut(msg) {\n" +
                "        setTimeout(function () {\n" +
                "            layerK.msg(msg);\n" +
                "            showInit(formToJson($('#searchForm').serializeArray()));\n" +
                "        }, 30)\n" +
                "    }\n" +
                "</script>\n" +
                "</body>\n" +
                "</html>");

        StringBuffer addPage = new StringBuffer(head);
        addPage.append("    <title>" + name + "管理</title>\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/font.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/weadmin.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"layui/css/layui.css\" media=\"all\">\n" +
                "\n" +
                "</head>\n" +
                "<body>\n" +
                "<div class=\"weadmin-nav\">\n" +
                "\t\t\t<span class=\"layui-breadcrumb\">\n" +
                "\t\t\t\t<a href=\"\">首页</a>\n" +
                "\t\t\t\t<a href=\"\">" + name + "管理</a>\n" +
                "\t\t\t\t<a>\n" +
                "\t\t\t\t\t<cite>" + name + "</cite>\n" +
                "\t\t\t\t</a>\n" +
                "\t\t\t</span>\n" +
                "    <a class=\"layui-btn layui-btn-sm\" style=\"line-height:1.6em;margin-top:3px;float:right\"\n" +
                "       href=\"javascript:location.replace(location.href);\" title=\"刷新\">\n" +
                "        <i class=\"layui-icon\" style=\"line-height:30px\">&#xe9aa;</i>\n" +
                "    </a>\n" +
                "</div>\n" +
                "<div class=\"main-body\">\n" +
                "    <form id=\"form\" class=\"layui-form\">\n" +
                "        <div class=\"layui-hide\">\n" +
                "            <input id=\"" + fields[0].getName() + "\" name=\"" + fields[0].getName() + "\" type=\"text\">\n" +
                "        </div>\n");

        for (int i = 1; i < fields.length; i++) {
            Description fieldDescription = fields[i].getAnnotation(Description.class);
            String property = fields[i].getName();
            String javaType = fields[i].getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.hide()) {
                } else {
                    addPage.append("        <div class=\"layui-form-item\">\n" +
                            "            <label class=\"layui-form-label\" style=\"width: 150px\">" + fieldDescription.value() + ":</label>\n" +
                            "            <div class=\"layui-input-inline\">\n" +
                            "                <input type=\"text\" id=\"" + property + "\" name=\"" + property + "\" required lay-verify=\"required\"\n" +
                            "                       placeholder=\"请输入" + fieldDescription.value() + "\"\n" +
                            "                       autocomplete=\"off\"\n" +
                            "                       class=\"layui-input\">\n" +
                            "            </div>\n" +
                            "        </div>\n");
                }
            }
        }
        addPage.append("        <div class=\"layui-form-item layui-hide\">\n" +
                "            <div class=\"layui-input-inline\">\n" +
                "                <button class=\"layui-btn\" lay-submit lay-filter=\"submitButton\" id=\"submitButton\">提交</button>\n" +
                "                <button type=\"reset\" class=\"layui-btn layui-btn-primary\">重置</button>\n" +
                "            </div>\n" +
                "        </div>\n" +
                "        <input type=\"text\" name=\"k_version_1234567890\" value=\"\" style=\"display: none\">;\n" +
                "    </form>\n" +
                "</div>\n" +
                "<script src=\"js/jquery.1.11.3.min.js\"></script>\n" +
                "<script src=\"layui/layui.all.js\"></script>\n" +
                "<script src=\"js/yk_util.js\"></script>\n" +
                "</body>\n" +
                "</html>");

        StringBuffer viewPage = new StringBuffer(head);
        viewPage.append("    <title>" + name + "</title>\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/font.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/weadmin.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"layui/css/layui.css\">\n" +
                "</head>\n" +
                "<body>\n" +
                "<div class=\"weadmin-nav\">\n" +
                "\t\t\t<span class=\"layui-breadcrumb\">\n" +
                "\t\t\t\t<a href=\"\">首页</a>\n" +
                "\t\t\t\t<a href=\"\">" + name + "管理</a>\n" +
                "\t\t\t\t<a>\n" +
                "\t\t\t\t\t<cite>" + name + "</cite>\n" +
                "\t\t\t\t</a>\n" +
                "\t\t\t</span>\n" +
                "    <a class=\"layui-btn layui-btn-sm\" style=\"line-height:1.6em;margin-top:3px;float:right\"\n" +
                "       href=\"javascript:location.replace(location.href);\" title=\"刷新\">\n" +
                "        <i class=\"layui-icon\" style=\"line-height:30px\">&#xe9aa;</i>\n" +
                "    </a>\n" +
                "</div>\n" +
                "<div class=\"main-body\">\n" +
                "    <form id=\"form\" class=\"layui-form\">\n" +
                "        <div class=\"layui-hide\">\n" +
                "            <input id=\"" + fields[0].getName() + "\" name=\"" + fields[0].getName() + "\" type=\"text\">\n" +
                "        </div>\n");
        for (int i = 1; i < fields.length; i++) {
            Description fieldDescription = fields[i].getAnnotation(Description.class);
            String property = fields[i].getName();
            String javaType = fields[i].getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.hide()) {
                } else {
                    viewPage.append("        <div class=\"layui-form-item\">\n" +
                            "            <label class=\"layui-form-label\" style=\"width: 150px\">" + fieldDescription.value() + ":</label>\n" +
                            "            <div class=\"layui-input-inline\">\n" +
                            "                <input type=\"text\" id=\"" + property + "\" name=\"" + property + "\" readonly value=\"${"+className+"."+property+"}\"\n" +
                            "                       placeholder=\"无\"\n" +
                            "                       autocomplete=\"off\"\n" +
                            "                       class=\"layui-input\">\n" +
                            "            </div>\n" +
                            "        </div>\n");
                }
            }
        }
        viewPage.append("        <div class=\"layui-form-item layui-hide\">\n" +
                "            <div class=\"layui-input-inline\">\n" +
                "                <button class=\"layui-btn\" lay-submit lay-filter=\"submitButton\" id=\"save\">提交</button>\n" +
                "                <button type=\"reset\" class=\"layui-btn layui-btn-primary\">重置</button>\n" +
                "            </div>\n" +
                "        </div>\n" +
                "        <input type=\"text\" name=\"k_version_1234567890\" value=\"\" style=\"display: none\">;\n" +
                "    </form>\n" +
                "</div>\n" +
                "<script src=\"js/jquery.1.11.3.min.js\"></script>\n" +
                "<script src=\"layui/layui.all.js\"></script>\n" +
                "<script src=\"js/yk_util.js\"></script>\n" +
                "</body>\n" +
                "</html>");
        StringBuffer editPage = new StringBuffer(head);
        editPage.append("    <title>" + name + "管理</title>\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/font.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"./templetdata/static/css/weadmin.css\">\n" +
                "    <link rel=\"stylesheet\" href=\"layui/css/layui.css\" media=\"all\">\n" +
                "\n" +
                "</head>\n" +
                "<body>\n" +
                "<div class=\"weadmin-nav\">\n" +
                "\t\t\t<span class=\"layui-breadcrumb\">\n" +
                "\t\t\t\t<a href=\"\">首页</a>\n" +
                "\t\t\t\t<a href=\"\">" + name + "管理</a>\n" +
                "\t\t\t\t<a>\n" +
                "\t\t\t\t\t<cite>" + name + "</cite>\n" +
                "\t\t\t\t</a>\n" +
                "\t\t\t</span>\n" +
                "    <a class=\"layui-btn layui-btn-sm\" style=\"line-height:1.6em;margin-top:3px;float:right\"\n" +
                "       href=\"javascript:location.replace(location.href);\" title=\"刷新\">\n" +
                "        <i class=\"layui-icon\" style=\"line-height:30px\">&#xe9aa;</i>\n" +
                "    </a>\n" +
                "</div>\n" +
                "<div class=\"main-body\">\n" +
                "    <form id=\"form\" class=\"layui-form\">\n" +
                "        <div class=\"layui-hide\">\n" +
                "            <input id=\"" + fields[0].getName() + "\" name=\"" + fields[0].getName() + "\" type=\"text\" value=\"${"+className+"."+fields[0].getName()+"}\">\n" +
                "        </div>\n");

        for (int i = 1; i < fields.length; i++) {
            Description fieldDescription = fields[i].getAnnotation(Description.class);
            String property = fields[i].getName();
            String javaType = fields[i].getType().getName();
            if ("serialVersionUID".equals(property)) {
                continue;//忽略掉这个属性
            } else {
                if (fieldDescription.hide()) {
                } else {
                    editPage.append("        <div class=\"layui-form-item\">\n" +
                            "            <label class=\"layui-form-label\" style=\"width: 150px\">" + fieldDescription.value() + ":</label>\n" +
                            "            <div class=\"layui-input-inline\">\n" +
                            "                <input type=\"text\" id=\"" + property + "\" name=\"" + property + "\" required lay-verify=\"required\" value=\"${"+className+"."+property+"}\"\n" +
                            "                       placeholder=\"请输入" + fieldDescription.value() + "\"\n" +
                            "                       autocomplete=\"off\"\n" +
                            "                       class=\"layui-input\">\n" +
                            "            </div>\n" +
                            "        </div>\n");
                }
            }
        }
        editPage.append("        <div class=\"layui-form-item layui-hide\">\n" +
                "            <div class=\"layui-input-inline\">\n" +
                "                <button class=\"layui-btn\" lay-submit lay-filter=\"submitButton\" id=\"submitButton\">提交</button>\n" +
                "                <button type=\"reset\" class=\"layui-btn layui-btn-primary\">重置</button>\n" +
                "            </div>\n" +
                "        </div>\n" +
                "        <input type=\"text\" name=\"k_version_1234567890\" value=\"\" style=\"display: none\">;\n" +
                "    </form>\n" +
                "</div>\n" +
                "<script src=\"js/jquery.1.11.3.min.js\"></script>\n" +
                "<script src=\"layui/layui.all.js\"></script>\n" +
                "<script src=\"js/yk_util.js\"></script>\n" +
                "</body>\n" +
                "</html>");
        //创建display文件
        try {
            pageUrl = pageUrl + "/" + className;
            File file = new File(pageUrl);
            if (!file.exists()) {
                file.mkdirs();
            }
            File generateFile1 = new File(pageUrl + "/" + "display" + className + ".jsp");
            if (generateFile1.createNewFile()) {
                Writer out = new FileWriter(generateFile1);
                out.write(displayPage.toString());
                out.close();
            }
            File generateFile2 = new File(pageUrl + "/" + "add" + className + ".jsp");
            if (generateFile2.createNewFile()) {
                Writer out = new FileWriter(generateFile2);
                out.write(addPage.toString());
                out.close();
            }
            File generateFile3 = new File(pageUrl + "/" + "view" + className + ".jsp");
            if (generateFile3.createNewFile()) {
                Writer out = new FileWriter(generateFile3);
                out.write(viewPage.toString());
                out.close();
            }
            File generateFile4 = new File(pageUrl + "/" + "edit" + className + ".jsp");
            if (generateFile4.createNewFile()) {
                Writer out = new FileWriter(generateFile4);
                out.write(editPage.toString());
                out.close();
            }
            // 文件保存路径
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /*方法区*/
    private static String property2Column(String property, Integer type) {
        if (type == 1) {
            Matcher matcher = humpPattern.matcher(property);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
            }
            matcher.appendTail(sb);
            return sb.toString();
        } else if (type == 2) {
            Matcher matcher = humpPattern.matcher(property);
            StringBuffer sb = new StringBuffer();
            while (matcher.find()) {
                matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
            }
            matcher.appendTail(sb);
            return sb.toString().toUpperCase();
        } else if (type == 3) {
            /*列名全小写没下划线*/
            return property.toLowerCase();
        } else if (type == 4) {
            /*列名全大写没下划线*/
            return property.toUpperCase();
        } else {
            return null;
        }
    }

    private static String javaType2jdbcType(String javaType) {
        if (javaType.contains("string")) {
            return "VARCHAR";
        } else if (javaType.contains("boolean")) {
            return "BIT";
        } else if (javaType.contains("byte")) {
            return "TINYINT";
        } else if (javaType.contains("short")) {
            return "SMALLINT";
        } else if (javaType.contains("int")) {
            return "INTEGER";
        } else if (javaType.contains("long")) {
            return "BIGINT";
        } else if (javaType.contains("double")) {
            return "DOUBLE";
        } else if (javaType.contains("float")) {
            return "REAL";
        } else if (javaType.contains("date")) {
            return "DATE";
        } else if (javaType.contains("timestamp")) {
            return "TIMESTAMP";
        } else if (javaType.contains("time")) {
            return "TIME";
        } else if (javaType.contains("bigdecimal")) {
            return "DECIMAL";
        } else if (javaType.contains("[b")) {
            return "VARCHAR";
        } else {
            return "未知类型";
        }
    }

    public static String firstCharToLORU(String text, Integer type) {
        if (type == 1) {
            //首字母转小写
            return Character.toLowerCase(text.charAt(0)) + text.substring(1);

        } else if (type == 2) {
            //首字母转大写
            return Character.toUpperCase(text.charAt(0)) + text.substring(1);
        } else {
            return null;
        }
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值