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\"></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\"></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\"></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\"></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;
}
}
}