Mybatis 最佳实践-Mapper扩展

背景

MyBatis提供了一个generator插件,通过这个插件可以自动实现mapper.xml 和对应的Mapp 以及实体Bean,用这个插件的好处是,xml中很多sql不用自己编写,直接通过数据库反向生成即可。但是他也有一个很大的弊端。


弊端:

1、如果直接修改xml文件,以后数据库新增字段只能手动改文件,扩展很麻烦

2、如果使用example方式查询,每次查询都要全部结果,对数据量大的且需要列少的业务,

SQL查询会成为瓶颈。

最佳实践

1、生成简单方法;

生成简单方法,Example相关选项都设置为false

不使用Example方式,且只生成简单的操作,generator配置片段如下,关键字表key_words

Mybatis 最佳实践-Mapper扩展

generator文件配置片段

这样配置只会生成如下几个方法,左侧基础增删改查方法列表,只提供id查询

Mybatis 最佳实践-Mapper扩展

生成的基础方法

其他方法就可以自己进行扩展,扩展方式如下

2、扩展xml和mapper文件。

新建KeyWordsBizMapper接口 继承自动生成的KeyWordsMapper

Mybatis 最佳实践-Mapper扩展

扩展的Mapper接口

有了Mapper接口,就要扩展xml实现自己的扩展方法。

xml里面有几个注意事项

namespace 需要指向扩展Mapper(和扩展Mapper绑定)

使用BaseResultMap 扩展自KeyWordsMapper, 这样做的好处是如果重新生成,扩展xml自动使用新映射

Base_Column_List 扩展自 KeyWordsMapper,好处同样,重新生成自动使用

Mybatis 最佳实践-Mapper扩展

扩展的xml文件

其他使用和其他xml没有任何区别,

总结

现在大家想一下,如果我数据库增加字段,可不可以自动生成?我需要改什么?

答案是可以生成,不用改,直接覆盖原有生成的bean,xml,mapper。


分享到:


相關文章: