一、什么是基类
- 如BaseEntity,BaseController 等父类,便称之为基类。
- 我们在设计数据库表时,时常会碰到如下情况:
id |
update_id |
update_time |
create_id |
create_time |
- 多张表,都需要这五个字段,那么,对应的实体类,也需要这5个字段:
class A{ class B{
private int id; private int id;
private int updateId; private int updateId;
private Date udpateTime; private Date udpateTime;
private int createId; private int createId;
private Date createTime; private Date createTime;
} }
- 此时,可以用基类BaseEntity来存放公共的字段:
class BaseEntity{
private int id;
private int updateId;
private Date udpateTime;
private int createId;
private Date createTime;
}
二、mybatis-plus 代码生成器
// 策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setNaming(NamingStrategy.underline_to_camel);
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
strategy.setSuperEntityClass("com.base.entity.BaseEntity");
strategy.setSuperEntityColumns("id", "update_id", "update_time", "create_id", "create_time");
strategy.setEntityLombokModel(true);
strategy.setRestControllerStyle(true);
// 公共父类
strategy.setSuperControllerClass("com.base.controller.BaseController");
// 写于父类中的公共字段
strategy.setInclude(scanner("表名,多个英文逗号分割").split(","));
strategy.setControllerMappingHyphenStyle(true);
strategy.setTablePrefix(pc.getModuleName() + "_");
mpg.setStrategy(strategy);
//mpg.setTemplateEngine(new FreemarkerTemplateEngine());
InjectionConfig cfg = new InjectionConfig() {
@Override
public void initMap() {
Map<String, Object> map = new HashMap<String, Object>();
//自定义配置,在模版中cfg.superColums 获取
// TODO 这里解决子类会生成父类属性的问题,在模版里会用到该配置
map.put("superColums", this.getConfig().getStrategyConfig().getSuperEntityColumns());
this.setMap(map);
}
};
- 重点叮嘱一点,这里填写的EntityColumns是数据库字段,不是实体类字段,不要搞混淆了。