一套基於SpringBoot+Vue+Shiro 前後端分離 開發的程式碼生成器
一、前言
最近花了一個月時間完成了一套基於Spring Boot+Vue+Shiro前後端分離的程式碼生成器,目前專案程式碼已基本完成
止步傳統CRUD,進階程式碼優化:
該專案可根據資料庫欄位動態生成 controller、mapper、service、html、jsp、vue、php、.py ... 等各種型別程式碼,採用 velocity 模板引擎在頁面動態配置生成程式碼,前後端動態許可權配置,前端許可權精確到 按鈕 級別,後端許可權精確到 uri 上,QQ授權第三方單使用者登入...等
基本環境:
- JDK 1.8
- IDEA 2019.2
- Redis 5.0.5
- MySQL 5.7
- Nginx 1.17.1
- Docker 18.09.7
- Node.js 10.15.3
專案使用技術棧:
前端:Vue + Axios 後端:Spring Boot 、 MyBatis-Plus 快取:Redis 許可權:Shiro .......
二、程式碼生成器介紹
線上體驗地址: http://www.zhengqing520.com:8100/code-generator/dashboard
1、登入:
測試賬號:test 密碼:123456
由於許可權問題 線上開放的許可權僅只是程式碼生成器那一部分,需要許可權控制、系統日誌等功能可fork原始碼參考~
三方登入目前暫支援QQ授權登入,預設許可權只有程式碼生成器模組,登入過後,30分鐘內不進行操作將自動下線,同一賬號在別處登入將被擠下線,點選頭像在個人資訊中可自行修改賬號、密碼、暱稱
2、程式碼生成器
① 專案管理
新建一個專案後,編輯專案包,這裡和我們ide開啟一個專案下面的包層次類似,後面生成的程式碼也將存放在此樹包目錄下,可以根據自己的需求來靈活配置建包
② 初始模板
這裡可以選擇給自己的專案新增一個初始模板,在專案模板管理
處可選擇專案進行一鍵新增生成對應的模板
生成規則:根據專案管理
中的包名與初始模板
中的模板型別名對應上即可生成,不對應的即不會處理~
③ 專案模板管理
列表頁面和初始模板
列表頁面型別,不同的是新增時需要選擇專案哦,後面的程式碼生成將會依照這裡配置的程式碼模板動態生成!
於是乎,整個程式碼生成的精髓就在乎這裡自己專案所配置的模板哦,這裡也給出了可以參考配置的模板資料
資料來源配置資訊,要在根據資料庫欄位生成一次程式碼後才擁有資料可以檢視哦,不然會是空資料!
ex: ${author}
對應生成 zhengqing
${package.input}
對應生成 com.zhengqing.modules.system.dto.input
另外就需要參考 Velocity
模板引擎的基本語法使用了
這裡再例出一個小編配置的實體類模板吧
溫馨小提示:在專案的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
可以在本地連線小編給出的資料庫 在裡面新建表然後在頁面配置連線後選擇表測試生成哦~ - 選擇表
- 生成程式碼或修改遠端資料庫註釋資訊,這裡為了安全考慮未做新增欄位,刪除欄位等功能,如有興趣,可fork小編原始碼自行修改其功能
3、系統管理
① 使用者管理
這裡不多說,就是一些基礎資訊
② 角色管理
- 將指定的角色分配給指定的使用者
- 分配指定的許可權給該角色
③ 選單管理
在這裡動態配置後端uri請求許可權與前端按鈕許可權
④ 系統日誌
三、總結
- 該程式碼生成器,打破傳統的CRUD,避免花費太多時間在重複事情上,將更多時間用於學習晉升
- 該專案對於小白來說可學習技術也有很多,比如
前後端分離
,跨域解決
,三方授權登入
,@Validated後端引數校驗
,簡單的redis快取處理
,shiro動態許可權配置
,前端按鈕級別許可權控制
等等,後端使用目前企業流行的Spring Boot
+MyBatis-Plus
技術棧,前端也是較為普遍 學習輕鬆的vue
。對於全棧瞭解入門也是一個好的demo - 本文目前只是給出專案使用介紹流程,後續若有時間,將會給出其中某些技術棧的案例教程 案例demo程式碼將會存放至:https://gitee.com/zhengqingya/java-workspace
注:實現本程式碼生成器參考了網上很多前後端教程,以及小編老大肖哥
,在這一個月時間裡,白天上班,晚上回家利用空閒時間來碼程式碼,其中也是學到了不少東西,現在也分享出來給大家,希望能夠幫助到有需要的小夥伴們~
專案原始碼
覺得還可以的話,請給個❤