还在从零开始搭建项目?手撸了款快速开发脚手架!
簡介
mall-tiny是一款基于SpringBoot+MyBatis-Plus的快速開發腳手架,擁有完整的權限管理功能,可對接Vue前端,開箱即用。
?
項目演示
mall-tiny項目可無縫對接mall-admin-web前端項目,秒變權限管理系統。前端項目地址:https://github.com/macrozheng/mall-admin-web
技術選型
數據庫表結構
化繁為簡,僅保留了權限管理功能相關的9張表,方便自由定制;
使用流程
環境搭建
簡化依賴服務,只需安裝最常用的MySql和Redis服務即可,數據庫中需要導入mall_tiny.sql腳本。
開發規約
項目包結構
src ├──?common?--?用于存放通用代碼 |???├──?api?--?通用結果集封裝類 |???├──?config?--?通用配置類 |???├──?domain?--?通用封裝對象 |???├──?exception?--?全局異常處理相關類 |???└──?service?--?通用業務類 ├──?config?--?SpringBoot中的Java配置 ├──?domain?--?共用封裝對象 ├──?generator?--?MyBatis-Plus代碼生成器 ├──?modules?--?存放業務代碼的基礎包 |???└──?ums?--?權限管理模塊業務代碼 |???????├──?controller?--?該模塊相關接口 |???????├──?dto?--?該模塊數據傳輸封裝對象 |???????├──?mapper?--?該模塊相關Mapper接口 |???????├──?model?--?該模塊相關實體類 |???????└──?service?--?該模塊相關業務處理類 └──?security?--?SpringSecurity認證授權相關代碼├──?annotation?--?相關注解├──?aspect?--?相關切面├──?component?--?認證授權相關組件├──?config?--?相關配置└──?util?--?相關工具類資源文件說明
resources ├──?mapper?--?MyBatis中mapper.xml存放位置 ├──?application.yml?--?SpringBoot通用配置文件 ├──?application-dev.yml?--?SpringBoot開發環境配置文件 ├──?application-prod.yml?--?SpringBoot生產環境配置文件 └──?generator.properties?--?MyBatis-Plus代碼生成器配置接口定義規則
創建表記錄:POST /{控制器路由名稱}/create
修改表記錄:POST /{控制器路由名稱}/update/{id}
刪除指定表記錄:POST /{控制器路由名稱}/delete/{id}
分頁查詢表記錄:GET /{控制器路由名稱}/list
獲取指定記錄詳情:GET /{控制器路由名稱}/{id}
具體參數及返回結果定義可以運行代碼查看Swagger-UI的Api文檔:http://localhost:8080/swagger-ui.html
項目運行
直接運行啟動類MallTinyApplication的main函數即可。
業務代碼開發流程
創建業務表
創建好pms模塊的所有表,需要注意的是一定要寫好表字段的注釋,這樣實體類和接口文檔中就會自動生成字段說明了。
使用代碼生成器
運行MyBatisPlusGenerator類的main方法來生成代碼,可直接生成controller、service、mapper、model、mapper.xml的代碼,無需手動創建。
代碼生成器支持兩種模式,一種生成單表的代碼,比如只生成pms_brand表代碼可以先輸入pms,后輸入pms_brand;
生成代碼結構一覽;
另一種直接生成整個模塊的代碼,比如生成pms模塊代碼可以先輸入pms,后輸入pms_*。
編寫業務代碼
單表查詢
由于MyBatis-Plus提供的增強功能相當強大,單表查詢幾乎不用手寫SQL,直接使用ServiceImpl和BaseMapper中提供的方法即可。
比如我們的菜單管理業務實現類UmsMenuServiceImpl中的方法都直接使用了這些方法。
/***?后臺菜單管理Service實現類*?Created?by?macro?on?2020/2/2.*/ @Service public?class?UmsMenuServiceImpl?extends?ServiceImpl<UmsMenuMapper,UmsMenu>implements?UmsMenuService?{@Overridepublic?boolean?create(UmsMenu?umsMenu)?{umsMenu.setCreateTime(new?Date());updateLevel(umsMenu);return?save(umsMenu);}@Overridepublic?boolean?update(Long?id,?UmsMenu?umsMenu)?{umsMenu.setId(id);updateLevel(umsMenu);return?updateById(umsMenu);}@Overridepublic?Page<UmsMenu>?list(Long?parentId,?Integer?pageSize,?Integer?pageNum)?{Page<UmsMenu>?page?=?new?Page<>(pageNum,pageSize);QueryWrapper<UmsMenu>?wrapper?=?new?QueryWrapper<>();wrapper.lambda().eq(UmsMenu::getParentId,parentId).orderByDesc(UmsMenu::getSort);return?page(page,wrapper);}@Overridepublic?List<UmsMenuNode>?treeList()?{List<UmsMenu>?menuList?=?list();List<UmsMenuNode>?result?=?menuList.stream().filter(menu?->?menu.getParentId().equals(0L)).map(menu?->?covertMenuNode(menu,?menuList)).collect(Collectors.toList());return?result;}@Overridepublic?boolean?updateHidden(Long?id,?Integer?hidden)?{UmsMenu?umsMenu?=?new?UmsMenu();umsMenu.setId(id);umsMenu.setHidden(hidden);return?updateById(umsMenu);} }分頁查詢
對于分頁查詢MyBatis-Plus原生支持,不需要再整合其他插件,直接構造Page對象,然后調用ServiceImpl中的page方法即可。
/***?后臺菜單管理Service實現類*?Created?by?macro?on?2020/2/2.*/ @Service public?class?UmsMenuServiceImpl?extends?ServiceImpl<UmsMenuMapper,UmsMenu>implements?UmsMenuService?{@Overridepublic?Page<UmsMenu>?list(Long?parentId,?Integer?pageSize,?Integer?pageNum)?{Page<UmsMenu>?page?=?new?Page<>(pageNum,pageSize);QueryWrapper<UmsMenu>?wrapper?=?new?QueryWrapper<>();wrapper.lambda().eq(UmsMenu::getParentId,parentId).orderByDesc(UmsMenu::getSort);return?page(page,wrapper);} }多表查詢
對于多表查詢,我們需要手寫mapper.xml中的SQL實現,由于之前我們已經生成了mapper.xml文件,所以我們直接在Mapper接口中定義好方法,然后在mapper.xml寫好SQL實現即可。
比如說我們需要寫一個根據用戶ID獲取其分配的菜單的方法,首先我們在UmsMenuMapper接口中添加好getMenuList方法;
然后在UmsMenuMapper.xml添加該方法的對應SQL實現即可。
項目部署
mall-tiny已經集成了Docker插件,可以打包成Docker鏡像來部署
其他說明
SpringSecurity相關
由于使用了SpringSecurity來實現認證和授權,部分接口需要token才可以訪問,訪問需要認證授權接口流程如下。
訪問Swagger-UI接口文檔:http://localhost:8080/swagger-ui.html
調用登錄接口獲取token;
點擊右上角Authorize按鈕輸入token,然后訪問相關接口即可。
請求參數校驗
默認集成了Jakarta Bean Validation參數校驗框架,只需在參數對象屬性中添加javax.validation.constraints包中的注解注解即可實現校驗功能,這里以登錄參數校驗為例。
首先在登錄請求參數中添加@NotEmpty注解;
然后在登錄接口中添加@Validated注解開啟參數校驗功能即可。
項目地址:https://github.com/macrozheng/mall-tiny
有道無術,術可成;有術無道,止于術
歡迎大家關注Java之道公眾號
好文章,我在看??
總結
以上是生活随笔為你收集整理的还在从零开始搭建项目?手撸了款快速开发脚手架!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 别以为JDK8有了红黑树,HashMap
- 下一篇: VS Supercharger插件的破解