最近花了一個月時間完成了一套基於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
肖哥
,在這一個月時間裏,白天上班,晚上回家利用空閒時間來碼代碼,其中也是學到了很多東西,如今也分享出來給你們,但願可以幫助到有須要的小夥伴們~以爲還能夠的話,請給個❤