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.csdn.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

 

示例代码:https://gitee.com/regedit0726/extend

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值