Generator【SpringBoot集成】代码生成+knife4j接口文档(2种模板设置、逻辑删除(2)

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取


### 2.代码生成类


如果要使用freemarker模板,需要额外配置 .setTemplateEngine(new FreemarkerTemplateEngine()); 启用 .setSwagger2(true);



class CodeGenerator {

/\*\*

* 项目根路径
*/
private static final String PROJECT_PATH = “E:\yuanzheng-codebase\m-framework\codegenerator”;

/\*\*

* 注释@auth 名称
*/
private static final String AUTH = “auth”;

/\*\*

* 父包全限定类名
*/
private static final String PARENT = “com.example.demo”;

/\*\*

* 模块名称
*/
private static final String MODEL_NAME = “student”;

/\*\*

* 忽略的表前缀
*/
private static final String[] IGNORE_TABLE_PFX = new String[]{“table_”, “t_”};

/\*\*

* 要生成的表名
*/
private static final String TABLE_NAMES = “student”;

/\*\*

* 数据源配置
*/
private static final DataSourceConfig DSC = new DataSourceConfig();

static {
    DSC.setDbType(DbType.MYSQL);
    DSC.setUrl("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true");
    DSC.setDriverName("com.mysql.cj.jdbc.Driver");
    DSC.setUsername("root");
    DSC.setPassword("root");
}

@Test
void test() {
    main(null);
}

static void main(String[] args) {

    // 代码生成器
    AutoGenerator mpg = new AutoGenerator();

    /\*

* 全局配置
*/
GlobalConfig gc = new GlobalConfig();
// 输出路径
gc.setOutputDir(PROJECT_PATH + “/src/main/java”);
// 设置作者
gc.setAuthor(AUTH);
// 生成代码后,是否打开文件夹
gc.setOpen(false);
// 是否覆盖原来代码
gc.setFileOverride(false);
// 去掉service的I前缀,一般只需要设置service就行
// gc.setServiceName(“%sService”);
// gc.setMapperName(“%sMapper”);
// gc.setXmlName(“%sMapper”);
// gc.setServiceImplName(“%sServiceImpl”);
// gc.setControllerName(“%sController”);
// 日期格式
gc.setDateType(DateType.ONLY_DATE);
// 实体属性 Swagger2 注解,实体类上会增加注释
gc.setSwagger2(true);
mpg.setGlobalConfig(gc);

    /\*

* 数据源配置
*/
mpg.setDataSource(DSC);

    /\*

* 配置模板(generator默认的是velocity,使用freemarker的话要打开此项设置)
*/
// mpg.setTemplateEngine(new FreemarkerTemplateEngine());

    /\*

* 包配置
*/
PackageConfig pc = new PackageConfig();
pc.setParent(PARENT);
pc.setModuleName(MODEL_NAME);
pc.setEntity(“entity”);
pc.setMapper(“mapper”);
pc.setService(“service”);
pc.setController(“controller”);
mpg.setPackageInfo(pc);

    /\*

* 策略配置
*/
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude(TABLE_NAMES);
strategy.setTablePrefix(IGNORE_TABLE_PFX);
// 包的命名规则,使用驼峰规则
strategy.setNaming(NamingStrategy.underline_to_camel);
// 列的名称,使用驼峰规则
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 是否使用lombok(要确认项目是否有lombok)
strategy.setEntityLombokModel(true);
// 是否使用
strategy.setRestControllerStyle(true);
// 逻辑删除(要结合数据表字段使用)
strategy.setLogicDeleteFieldName(“is_delete”);

    // 自动填充字段
    TableFill fillInsert = new TableFill("create\_time", FieldFill.INSERT);
    TableFill fillUpdate = new TableFill("update\_time", FieldFill.UPDATE);
    List fillLists = new ArrayList();
    fillLists.add(fillInsert);
    fillLists.add(fillUpdate);
    strategy.setTableFillList(fillLists);
    //乐观锁
    //strategy.setVersionFieldName("version");
    mpg.setStrategy(strategy);

    // 执行
    mpg.execute();

}

}


### 3.生成后的结构


![在这里插入图片描述](https://img-blog.csdnimg.cn/20210527111430489.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl8zOTE2ODU0MQ==,size_16,color_FFFFFF,t_70#pic_center)


**Student**  
 可以看到代码生成设置的逻辑删除字段、INSERT和UPDATE填充字段的注释。



@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value=“Student对象”, description=“”)
public class Student implements Serializable {

private static final long serialVersionUID=1L;

@ApiModelProperty(value = "编号")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;

@ApiModelProperty(value = "姓名")
private String name;

@ApiModelProperty(value = "年龄")
private Integer age;

@ApiModelProperty(value = "是否删除")
@TableLogic
private Integer isDelete;

@ApiModelProperty(value = "入库时间")
@TableField(fill = FieldFill.INSERT)
private Date createTime;

@ApiModelProperty(value = "修改时间")
@TableField(fill = FieldFill.UPDATE)
private Date updateTime;

}


**DateObjectHandler**  
 处理一下填充字段。



@Component
public class DateObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName(“createTime”, new Date(), metaObject);
}

@Override
public void updateFill(MetaObject metaObject) {
    this.setFieldValByName("updateTime", new Date(), metaObject);
}

}


**Controller**  
 简单测试一下。



![img](https://img-blog.csdnimg.cn/img_convert/ac880a018e3dc3d936d9eac848a9c7bf.png)
![img](https://img-blog.csdnimg.cn/img_convert/ee843a49eb618cb83fd1b35236e542c9.png)

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值