一、问题描述
之前写了一篇【保姆级喂饭教程】Mybatis Plus Generator 3.5.12最新版代码生成器配置教程,后来在排除一些测试表、临时表等对应后缀表时却发现模糊表排除无法生效,但是模糊表匹配是正常的,经过多种测试和分析都找不到结果,去GitHub上提了个issue,才找到原因。
二、场景还原
1. 策略配置
截取策略配置如下,排除包含base的表名
.strategyConfig(builder -> {
builder.enableSkipView()
.addInclude()
.notLikeTable(new LikeTable("base"))
.entityBuilder()
.superClass(BaseEntity.class)
.enableChainModel()
.enableLombok(new ClassAnnotationAttributes("@Data","lombok.Data"))
.enableTableFieldAnnotation()
.addSuperEntityColumns()
.enableFileOverride()
.controllerBuilder().disable()
.serviceBuilder().disable()
.mapperBuilder()
.mapperAnnotation(Mapper.class)
.enableFileOverride();
})
三、原因分析
结果只是因为官方不支持,哈哈哈,notLikeTable这种只使用于使用SQLQuery的方式。
https://baomidou.com/guides/new-code-generator/#生成方式
四、解决方案
由于官方不支持,那没有直接的解决方案,只能是曲线救国一下
- 正常表都加前缀,通过模糊表匹配来匹配需要生成的表
- 第一次全部生成所有表,删除临时表的文件,后续通过表名匹配增加新表
- 改用SQLQuery的方式进行查询
我最后采用了第二种,二次封装写了一个代码生成器。
喜欢的点个关注吧><!祝你永无bug!
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/