mybatis的mapper继承实现
mybatis-generator用来生成单表操作sql很方便,可以节省很多时间,但是项目里的sql又通常不会只有简单的单表sql,有些复杂的单表sql或联表sql需要手写,那么想扩展生成的mapper.xml怎么做呢?最近综合了网上看到的一些技术博客,加上自己的实践,总结了以下两种可行方式(Spring框架,ssm或Spring boot,spring Cloud等),本文主要从实现角度讲,原理部分就略过了
一、声明扩展接口XXXMapperExt扩展mybatis-generator生成的接口XXXMapper,生成扩展mapper,namespace声明为XXXMapperExt,实际注入对象为XXXMapperExt类型
这种实现有两个需要注意的
1,XXXMapper不能被Spring扫描实例化
2、扩展mapper文件里不能引生成的mapper里的resultmap,sql等。
以下为示例代码:
以上为生成的mapper文件和接口文件。
以上为扩展mapper和接口文件
扫描配置只扫描了扩展的mapper接口文件。
参考博客:https://blog.****.net/u010634066/article/details/80873175
二、生成XXXMapper.java接口文件和XXXMapper.xml,再声明要扩展的XXXMapperExt和XXXMapperExt.xml文件,XXXMapperExt的namespace为XXXMapper接口,XXXMapper需要扩展XXXMapperExt接口
这种实现的XXXMapperExt.xml是可以引XXXMapper.xml文件里的resultMap和sql的,
示例代码如下:
以上为生成的代码,需要把接口扩展一下
以上为扩展的代码,mapper.xml的namespace为生成的接口类,并且可以引到生成的mapper.xml里定义的resultMap
注入使用的类为生成的接口类
参考项目代码:https://github.com/zhou7rui/ssm-example