背景
MyBatis提供了一个generator插件,通过这个插件可以自动实现mapper.xml 和对应的Mapp 以及实体Bean,用这个插件的好处是,xml中很多sql不用自己编写,直接通过数据库反向生成即可。但是他也有一个很大的弊端。
弊端:
1、如果直接修改xml文件,以后数据库新增字段只能手动改文件,扩展很麻烦
2、如果使用example方式查询,每次查询都要全部结果,对数据量大的且需要列少的业务,
SQL查询会成为瓶颈。
最佳实践
1、生成简单方法;
生成简单方法,Example相关选项都设置为false
不使用Example方式,且只生成简单的操作,generator配置片段如下,关键字表key_words
这样配置只会生成如下几个方法,左侧基础增删改查方法列表,只提供id查询
其他方法就可以自己进行扩展,扩展方式如下
2、扩展xml和mapper文件。
新建KeyWordsBizMapper接口 继承自动生成的KeyWordsMapper
有了Mapper接口,就要扩展xml实现自己的扩展方法。
xml里面有几个注意事项
namespace 需要指向扩展Mapper(和扩展Mapper绑定)
使用BaseResultMap 扩展自KeyWordsMapper, 这样做的好处是如果重新生成,扩展xml自动使用新映射
Base_Column_List 扩展自 KeyWordsMapper,好处同样,重新生成自动使用
其他使用和其他xml没有任何区别,
总结
现在大家想一下,如果我数据库增加字段,可不可以自动生成?我需要改什么?
答案是可以生成,不用改,直接覆盖原有生成的bean,xml,mapper。
閱讀更多 BeginCode 的文章