最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro先后端分离的代码生成器,目前项目代码已基本完成php
该项目可根据数据库字段动态生成 controller、mapper、service、html、jsp、vue、php、.py ... 等各类类型代码,采用 velocity 模板引擎在页面动态配置生成代码,先后端动态权限配置,前端权限精确到 按钮 级别,后端权限精确到 uri 上,QQ受权第三方单用户登陆...等html
前端:Vue + Axios
后端:Spring Boot 、 MyBatis-Plus
缓存:Redis
权限:Shiro
.......前端
测试帐号:test 密码:123456vue
因为权限问题 线上开放的权限仅只是代码生成器那一部分,须要权限控制、系统日志等功能可fork源码参考~
三方登陆目前暂支持QQ受权登陆,默认权限只有代码生成器模块,登陆事后,30分钟内不进行操做将自动下线,同一帐号在别处登陆将被挤下线,点击头像在我的信息中可自行修改帐号、密码、昵称java
新建一个项目后,编辑项目包,这里和咱们ide打开一个项目下面的包层次相似,后面生成的代码也将存放在此树包目录下,能够根据本身的需求来灵活配置建包ios
这里能够选择给本身的项目添加一个初始模板,在项目模板管理
处可选择项目进行一键新增生成对应的模板
生成规则:根据项目管理
中的包名与初始模板
中的模板类型名对应上便可生成,不对应的即不会处理~git
列表页面和初始模板
列表页面类型,不一样的是新增时须要选择项目哦,后面的代码生成将会依照这里配置的代码模板动态生成!
因而乎,整个代码生成的精髓就在意这里本身项目所配置的模板哦,这里也给出了能够参考配置的模板数据github
数据源配置信息,要在根据数据库字段生成一次代码后才拥有数据能够查看哦,否则会是空数据!
ex: ${author}
对应生成 zhengqing
${package.input}
对应生成 com.zhengqing.modules.system.dto.input
另外就须要参考 Velocity
模板引擎的基本语法使用了
这里再例出一个小编配置的实体类模板吧redis
舒适小提示:在项目的sql中保存有小编代码生成器项目中配置的项目模板以供参考哦~
package ${package.entity}; #foreach($pkg in ${table.importPackages}) import ${pkg}; #end import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * <p> ${table.comment} </p> * * @author: ${author} * @date: ${date} */ #if(${table.convert}) @Data @ApiModel(description = "${table.comment}") @TableName("${table.name}") #end #if(${superEntityClass}) public class ${entity} extends ${superEntityClass}#if(${activeRecord})<${entity}>#end { #elseif(${activeRecord}) public class ${entity} extends Model<${entity}> { #else public class ${entity} implements Serializable { #end private static final long serialVersionUID = 1L; #foreach($field in ${table.fields}) #if(${field.keyFlag}) #set($keyPropertyName=${field.propertyName}) #end #if("$!field.comment" != "") /** * ${field.comment} */ @ApiModelProperty(value = "${field.comment}") #end #if(${field.keyFlag}) @TableId(value="${field.name}", type= IdType.AUTO) #else @TableField("${field.name}") #end private ${field.propertyType} ${field.propertyName}; #end #if(${entityColumnConstant}) #foreach($field in ${table.fields}) public static final String ${field.name.toUpperCase()} = "${field.name}"; #end #end #if(${activeRecord}) @Override protected Serializable pkVal() { #if(${keyPropertyName}) return this.${keyPropertyName}; #else return this.id; #end } #end }
这里即是配置数据库链接信息了,这里小编给出一个开放的数据库可供链接测试使用,但愿读者不要乱搞哦
数据库链接地址:www.zhengqing520.com:3306
用户名:hello
密码:root
能够在本地链接小编给出的数据库 在里面新建表而后在页面配置链接后选择表测试生成哦~sql
这里很少说,就是一些基础信息
在这里动态配置后端uri请求权限与前端按钮权限
先后端分离
,跨域解决
,三方受权登陆
,@Validated后端参数校验
,简单的redis缓存处理
,shiro动态权限配置
,前端按钮级别权限控制
等等,后端使用目前企业流行的Spring Boot
+MyBatis-Plus
技术栈,前端也是较为广泛 学习轻松的vue
。对于全栈了解入门也是一个好的demo案例demo代码将会存放至:https://gitee.com/zhengqingya/java-workspace
肖哥
,在这一个月时间里,白天上班,晚上回家利用空闲时间来码代码,其中也是学到了很多东西,如今也分享出来给你们,但愿可以帮助到有须要的小伙伴们~以为还能够的话,请给个❤