品牌手机网站开发,网站建设公司好吗,关键词排名优化技巧,百度收录网址官网修改了下idea自带的代码生成脚本#xff0c;增加了脚本代码的注释#xff0c;生成了controller#xff0c;service#xff0c;impl#xff0c;mapper#xff0c;里面都是空的#xff0c;具体可以根据自己的代码习惯增加 代码生成脚本的使用可以看下使用 idea 生成实体类…修改了下idea自带的代码生成脚本增加了脚本代码的注释生成了controllerserviceimplmapper里面都是空的具体可以根据自己的代码习惯增加 代码生成脚本的使用可以看下使用 idea 生成实体类代码
修改后的脚本代码
import com.intellij.database.model.DasTable
import com.intellij.database.util.Case
import com.intellij.database.util.DasUtil
import com.intellij.database.model.ObjectKind
import java.io.*
import java.text.SimpleDateFormat/** Available context bindings:* SELECTION IterableDasObject* PROJECT project* FILES files helper*/
/*** 对应类型转换配置* 数据库类型java类型*/
typeMapping [(~/(?i)tinyint|smallint|mediumint/) : Integer,(~/(?i)int/) : Long,(~/(?i)bool|bit/) : Boolean,(~/(?i)float|double|decimal|real/) : Double,(~/(?i)datetime|timestamp|date|time/): Date,(~/(?i)/) : String
]/*** 程序入口*/
FILES.chooseDirectoryAndSave(选择文件夹, 选择controller、domain,service,mapper的上级目录生成的代码将会保存到对应文件夹。) {dir - SELECTION.filter { it instanceof DasTable }.each { generate(it, dir) }
}/*** 代码生成* param table 表的对象* param dir 选择的文件夹路径*/
def generate(table, dir) {String domainDir ${dir}/domainString domainClassName javaName(table.getName(), true)String domainPackageName getPackageName(domainDir)// 生成实体类// 这个utf8是解决乱码new File(domainDir, ${domainClassName}.java).withPrintWriter(UTF-8) {out - generateDomain(out, domainClassName, table, domainPackageName)}// 生成mapperString mapperDir ${dir}/mapperString mapperClassName ${domainClassName}MapperString mapperPackageName getPackageName(mapperDir)new File(mapperDir, ${mapperClassName}.java).withPrintWriter(UTF-8) {out -generateMapper(out, mapperClassName, mapperPackageName,domainClassName, domainPackageName)}// 生成serviceString serviceDir ${dir}/serviceString serviceClassName ${domainClassName}ServiceString servicePackageName getPackageName(serviceDir)new File(serviceDir, ${serviceClassName}.java).withPrintWriter(UTF-8) { out - generateService(out, serviceClassName, servicePackageName) }// 生成serviceImplString servicImplDir ${serviceDir}/implString serviceImplClassName ${serviceClassName}ImplString serviceImplPackageName getPackageName(servicImplDir)new File(servicImplDir, ${serviceImplClassName}.java).withPrintWriter(UTF-8) {out -generateServiceImpl(out, serviceImplClassName, serviceImplPackageName,serviceClassName, servicePackageName, mapperPackageName,mapperClassName, domainClassName, domainPackageName)}// 生成ControllerString controllerDir ${dir}/controllerString controllerClassName ${domainClassName}ControllerString controllerPackageName getPackageName(controllerDir)new File(controllerDir, ${controllerClassName}.java).withPrintWriter(UTF-8) {out -generateController(out, controllerClassName, controllerPackageName,serviceImplClassName, serviceImplPackageName, serviceClassName,servicePackageName, domainClassName, domainPackageName)}}/*** 文件夹路径转换为包名* param dir 文件夹路径* return 包名*/
static String getPackageName(dir) {return dir.toString().replaceAll(\\\\, .).replaceAll(/, .).replaceAll(^.*src(\\.main\\.java\\.)?, )
}
/*** 生成实体类* param out 输出流* param className 类名* param table 数据库表对象* param dir 文件夹路径*/
def generateDomain(out, className, table, domainPackageName) {def fields calcFields(table)String tableName table.getName();def comment table.getComment();out.println package $domainPackageName;out.println out.println import com.baomidou.mybatisplus.annotation.IdType;out.println import com.baomidou.mybatisplus.annotation.TableField;out.println import com.baomidou.mybatisplus.annotation.TableId;out.println import com.baomidou.mybatisplus.annotation.TableName;out.println import java.util.Date;out.println import com.fasterxml.jackson.annotation.JsonFormat;out.println import java.io.Serializable;out.println import lombok.Data;out.println import lombok.AllArgsConstructor;out.println import lombok.Builder;out.println import lombok.NoArgsConstructor;out.println out.println /**out.println * $commentout.println * author zjxout.println */out.println Dataout.println TableName(\$tableName\)out.println NoArgsConstructorout.println AllArgsConstructorout.println Builderout.println public class $className implements Serializable{out.println out.println \tTableField(exist false)out.println genSerialID()out.println fields.each() {// 输出注释if (isNotEmpty(it.commoent)) {out.println \t/**out.println \t * ${it.commoent}out.println \t */}if (it.type Date) {out.println \tJsonFormat(pattern \yyyy-MM-dd HH:mm:ss\)}if (it.annos ! ) out.println ${it.annos}out.println \tprivate ${it.type} ${it.name};}out.println out.println }
}/*** 生成mapper* param out 输出流* param mapperClassName mapper类名* param mapperPackageName mapper包名* param domainClassName 实体类类名* param domainPackageName 实体类包名*/
void generateMapper(out, mapperClassName, mapperPackageName, domainClassName,domainPackageName) {out.println package $mapperPackageName;out.println out.println import $domainPackageName.$domainClassName;out.println import com.baomidou.mybatisplus.core.mapper.BaseMapper;out.println import org.apache.ibatis.annotations.Mapper;out.println out.println /**out.println * author zjxout.println */out.println Mapperout.println public interface $mapperClassName extends BaseMapper$domainClassName{out.println out.println }
}
/*** 生成service* param out 输出流* param serviceClassName service类名* param servicePackageName service包名*/
void generateService(out, serviceClassName, servicePackageName) {out.println package $servicePackageName;out.println out.println /**out.println * author zjxout.println */out.println public interface $serviceClassName {out.println out.println }
}
/*** 生成ServiceImpl* param out 输出流* param serviceImplClassName serviceImpl类名* param serviceImplPackageName serviceImpl包名* param serviceClassName service类名* param service包名* param mapperPackageName mapper类名* param mapperClassName mapper包名* param domainClassName 实体类类名* param domainPackageName 实体类包名*/
void generateServiceImpl(out, serviceImplClassName, serviceImplPackageName,serviceClassName, servicePackageName, mapperPackageName,mapperClassName, domainClassName, domainPackageName) {String lowerMapperClassName mapperClassName.length() 1 ? mapperClassName : mapperClassName[0].toLowerCase() mapperClassName[1..-1];out.println package $serviceImplPackageName;out.println out.println import $servicePackageName.$serviceClassName;out.println import $mapperPackageName.$mapperClassName;out.println import org.springframework.stereotype.Service;out.println import javax.annotation.Resource;out.println out.println /**out.println * author zjxout.println */out.println Serviceout.println public class $serviceImplClassName implements $serviceClassName {out.println \tResourceout.println \tprivate $mapperClassName $lowerMapperClassName;out.println out.println }
}/**** 生成ServiceImpl* param out 输出流* param serviceImplClassName serviceImpl类名* param serviceImplPackageName serviceImpl包名* param serviceClassName service类名* param service包名* param controllerClassName controller类名* param controllerPackageName controller包名* param domainClassName 实体类类名* param domainPackageName 实体类包名*/
void generateController(out, controllerClassName, controllerPackageName,serviceImplClassName, serviceImplPackageName, serviceClassName,servicePackageName, domainClassName, domainPackageName){String lowerServiceClassName serviceClassName.length() 1 ? serviceClassName : serviceClassName[0].toLowerCase() serviceClassName[1..-1];String lowerDomainClassName domainClassName.length() 1 ? domainClassName : domainClassName[0].toLowerCase() domainClassName[1..-1];out.println package $serviceImplPackageName;out.println out.println import $servicePackageName.$serviceClassName;out.println import javax.annotation.Resource;out.println import org.springframework.web.bind.annotation.RestController;out.println import org.springframework.web.bind.annotation.RequestMapping;out.println out.println /**out.println * author zjxout.println */out.println RestControllerout.println RequestMapping(\/${lowerDomainClassName}\)out.println public class $controllerClassName {out.println \tResourceout.println \tprivate $serviceClassName $lowerServiceClassName;out.println out.println }
}/*** 读取处理表的数据* param table 表的对象* return 表的数据*/
def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col -def spec Case.LOWER.apply(col.getDataType().getSpecification())def typeStr typeMapping.find { p, t - p.matcher(spec).find() }.valuedef comm [colName : col.getName(),name : javaName(col.getName(), false),type : typeStr,commoent: col.getComment(),annos : ]if (主键.equals(col.getComment().toString()))comm.annos \tTableId(type IdType.AUTO)fields [comm]}
}/*** 表名转换为类名* param tableName 表名* param capitalize 是否将首字母转大写* return 转换后的类名*/
String javaName(tableName, capitalize) {String s com.intellij.psi.codeStyle.NameUtil.splitNameIntoWords(tableName).collect { Case.LOWER.apply(it).capitalize() }.join().replaceAll(/[^\p{javaJavaIdentifierPart}[_]]/, _)capitalize || s.length() 1 ? s : Case.LOWER.apply(s[0]) s[1..-1]
}static def isNotEmpty(content) {return content ! null content.toString().trim().length() 0
}/*** 生成serialVersionUID*/
static String genSerialID() {return \tprivate static final long serialVersionUID Math.abs(new Random().nextLong()) L;
} 文章转载自: http://www.morning.fynkt.cn.gov.cn.fynkt.cn http://www.morning.lhyhx.cn.gov.cn.lhyhx.cn http://www.morning.qrgfw.cn.gov.cn.qrgfw.cn http://www.morning.kzpy.cn.gov.cn.kzpy.cn http://www.morning.yfffg.cn.gov.cn.yfffg.cn http://www.morning.rrxnz.cn.gov.cn.rrxnz.cn http://www.morning.hympq.cn.gov.cn.hympq.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.rbrhj.cn.gov.cn.rbrhj.cn http://www.morning.zzbwjy.cn.gov.cn.zzbwjy.cn http://www.morning.cwrnr.cn.gov.cn.cwrnr.cn http://www.morning.tzlfc.cn.gov.cn.tzlfc.cn http://www.morning.cspwj.cn.gov.cn.cspwj.cn http://www.morning.pjzcp.cn.gov.cn.pjzcp.cn http://www.morning.xiaobaixinyong.cn.gov.cn.xiaobaixinyong.cn http://www.morning.ynrzf.cn.gov.cn.ynrzf.cn http://www.morning.xflwq.cn.gov.cn.xflwq.cn http://www.morning.xgxbr.cn.gov.cn.xgxbr.cn http://www.morning.qglqb.cn.gov.cn.qglqb.cn http://www.morning.brbmf.cn.gov.cn.brbmf.cn http://www.morning.kqzt.cn.gov.cn.kqzt.cn http://www.morning.lbpqk.cn.gov.cn.lbpqk.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.sxbgc.cn.gov.cn.sxbgc.cn http://www.morning.ruifund.com.gov.cn.ruifund.com http://www.morning.npqps.cn.gov.cn.npqps.cn http://www.morning.yqfdl.cn.gov.cn.yqfdl.cn http://www.morning.rrcrs.cn.gov.cn.rrcrs.cn http://www.morning.hymmq.cn.gov.cn.hymmq.cn http://www.morning.mjtgt.cn.gov.cn.mjtgt.cn http://www.morning.qpsxz.cn.gov.cn.qpsxz.cn http://www.morning.kqpsj.cn.gov.cn.kqpsj.cn http://www.morning.ppzgr.cn.gov.cn.ppzgr.cn http://www.morning.fhbhr.cn.gov.cn.fhbhr.cn http://www.morning.vvbsxm.cn.gov.cn.vvbsxm.cn http://www.morning.fxkgp.cn.gov.cn.fxkgp.cn http://www.morning.homayy.com.gov.cn.homayy.com http://www.morning.rzdpd.cn.gov.cn.rzdpd.cn http://www.morning.smggx.cn.gov.cn.smggx.cn http://www.morning.clnmf.cn.gov.cn.clnmf.cn http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn http://www.morning.mdrnn.cn.gov.cn.mdrnn.cn http://www.morning.zwxfj.cn.gov.cn.zwxfj.cn http://www.morning.gbjxj.cn.gov.cn.gbjxj.cn http://www.morning.xflzm.cn.gov.cn.xflzm.cn http://www.morning.tbjtp.cn.gov.cn.tbjtp.cn http://www.morning.rwdbz.cn.gov.cn.rwdbz.cn http://www.morning.djlxz.cn.gov.cn.djlxz.cn http://www.morning.ckdgj.cn.gov.cn.ckdgj.cn http://www.morning.mhwtq.cn.gov.cn.mhwtq.cn http://www.morning.kszkm.cn.gov.cn.kszkm.cn http://www.morning.rjxwq.cn.gov.cn.rjxwq.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.ddxjr.cn.gov.cn.ddxjr.cn http://www.morning.dkbgg.cn.gov.cn.dkbgg.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.spfh.cn.gov.cn.spfh.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.rwwdp.cn.gov.cn.rwwdp.cn http://www.morning.rqmr.cn.gov.cn.rqmr.cn http://www.morning.wncb.cn.gov.cn.wncb.cn http://www.morning.stflb.cn.gov.cn.stflb.cn http://www.morning.pnljy.cn.gov.cn.pnljy.cn http://www.morning.lcbt.cn.gov.cn.lcbt.cn http://www.morning.rsbqq.cn.gov.cn.rsbqq.cn http://www.morning.hcwlq.cn.gov.cn.hcwlq.cn http://www.morning.kkgbs.cn.gov.cn.kkgbs.cn http://www.morning.lqgtx.cn.gov.cn.lqgtx.cn http://www.morning.wgrl.cn.gov.cn.wgrl.cn http://www.morning.gbsby.cn.gov.cn.gbsby.cn http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn http://www.morning.mflqd.cn.gov.cn.mflqd.cn http://www.morning.jcfg.cn.gov.cn.jcfg.cn http://www.morning.qcygd.cn.gov.cn.qcygd.cn http://www.morning.rzcbk.cn.gov.cn.rzcbk.cn http://www.morning.msbmp.cn.gov.cn.msbmp.cn http://www.morning.btmwd.cn.gov.cn.btmwd.cn http://www.morning.nytqy.cn.gov.cn.nytqy.cn http://www.morning.hwbf.cn.gov.cn.hwbf.cn http://www.morning.dbddm.cn.gov.cn.dbddm.cn