这是我参与11月更文挑战的第14天,活动详情查看:2021最后一次更文挑战
前言
本节介绍RuoYi-Vue
的代码生成模块是如何进行配置生成代码的,它的可视化代码编辑模式对于开发者而言可以很好的解决重复代码编写问题,只需一键就可以将大部分的重复代码都生成出来,开发者可以将自己的注意力完全放在业务逻辑的编写上,解决掉无聊的增删改查。
ruoyi-generator
在ruoyi的代码中,生成代码的模块代码很多,
有配置,Controller,实体类,mapper,service,util和对应的模板(controller.java.vm),实际上就是一个小的项目了
GenConfig
类
本类直接使用了@ConfigurationProperties来帮助将对应的配置的yml属性填充到该类中。
@ConfigurationProperties(prefix = "gen")
@PropertySource(value = { "classpath:generator.yml" })
复制代码
两者一一对应
代码生成列表接口
这个接口用来展示gen_table
表中的数据
这个对应的sql如下
<where>
<if test="tableName != null and tableName != ''">
AND lower(table_name) like lower(concat('%', #{tableName}, '%'))
</if>
<if test="tableComment != null and tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
AND date_format(create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
AND date_format(create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
</if>
</where>
复制代码
通过lower函数将输入的和表的名称都变为小写,我们平时很少这么写是因为我们一般都是针对中文进行检索,所以不需要小写化,而这里是对表名进行模糊检索,表名基本都是英文,所以我们需要变为小写来做模糊搜索。
而这里的params.beginTime
是通过BaseEntity
中的
/** 请求参数 */
private Map<String, Object> params;
复制代码
来直接获得的 前台每次添加日期范围都直接向这个Param参数中添加,因此我们就不用每个实体类中都添加这些搜索参数了,实际上带来了一些隐患,因为没有办法验证它们的正确与否,没有办法一开始就检测到错误参数,不过是省了一部分开发精力。