从零开始,手打一个权限管理系统(第二十章 代码生成器)

第二十章 代码生成器


前言

代码写多就会发现很多都是重复的工作,我是一个比较懒的人,所以我决定写一个代码生成器,用来提高效率;具体思路就是通过模板引擎来生成我所需要的代码,网上有很多开源的优秀项目,但是跟我的代码风格和前端不适配,但是思路都是差不多。


一、Thymeleaf模板引擎

Thymeleaf官网地址
这是Spring官方推荐的(具体地址),操作也很简单,直接引入jar包就可以了。

	<dependency>
        <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-thymeleaf</artifactId>
     </dependency>
     <dependency>
          <groupId>org.thymeleaf</groupId>
          <artifactId>thymeleaf</artifactId>
      </dependency>

由于我需要生成的是java和vue文件,所以需要用到Thymeleaf的文本模式


二、构建模板文件

我需要对不同类型和功能的文件构建一个通用的模板,这里我构建了【“entity”, “mapper”, “service”, “serviceImpl”, “controller”, “index_td”, “form_td”, “api_td”】八种类型的通用模板,统一存放到了templates文件下面在这里插入图片描述
entity.th的内容

package [(${packageName})].[(${moduleName})].entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * [(${tableComment})]
 * @Author [(${author})]
 * @create [(${dateTime})]
 */
@Data
public class [(${camelTableName})] {

        [# th:each="column : ${columns}"]

        [# th:if="!${#strings.isEmpty(column.columnComment)}"]
        /**
         * [(${column.columnComment})]
         */
        [/]

        [# th:if="${#strings.equalsIgnoreCase(column.columnName, pk.columnName)}"]
        @TableId(type = IdType.ASSIGN_ID)
        [/]
        private [(${column.attrType})] [(${column.camelColumnName})];
        [/]
}

其中[(${camelTableName})]这种表达式就是我们需要替换的变量。

[# th:each="item : ${items}"]
  - [(${item})]
[/]

这种就循环操作;还有其他的语法规则请参考文本模式


三、数据组装

代码的生成其实是根据设计好的表来实现的,所以需要通过Mysql数据库里面的information_schema这个库来获得相关的信息,像表名,列名,字段类型就可以转换成java的类名,属性名,变量类型等,具体可以参考源码中SysGen开头的类的代码。
最终效果如下,可以一次生成八个文件代码,大大节省了体力。
在这里插入图片描述
当然生成的代码还需要自己微调一下,这样才能正确运行。

当前版本tag:2.0.6
代码仓库


四、 体验地址

后台数据库只给了部分权限,报错属于正常!
想学的老铁给点点关注吧!!!
欢迎留言交流!!!

我是阿咕噜,一个从互联网慢慢上岸的程序员,如果喜欢我的文章,记得帮忙点个赞哟,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值