mapper.xml文件实现继承机制的方式

前言:

按照个人理解,mapper.xml文件实现继承分为两个方面的继承。

第一种:

对原有的mapper.xml文件实现扩展功能。也就是创建一个新的扩展mapper.xml文件,直接继承原有mapper.xml文件中的所有内容保持不变并在此基础上扩展新的功能。

场景举例
原本有一个StudentMapper.java的mapper.xml文件,里面已经写好了新增、修改、查询功能的sql,但是此时需要对StudentMapper.java扩展实现一个新的功能(比如:删除的功能),条件是不允许更改原本StudentMapper.java的StudentMapper.xml文件,此时就需要创建一个新的mapper.xml文件,继承原有StudentMapper.java对应的StudentMapper.xml文件功能并新增实现学习功能。

代码实现:
首先我们是已经有一个StudentMapper.java和对应的StudentMapper.xml文件的,如下:

StudentMapper:

public interface StudentMapper {

    //新增学生信息
    Integer addStudentInfo(Student student);
    //根据id删除学生信息(物理刪除)
    Integer deleteStudentInfoById(Integer studentId);
    //更新学生信息
    Integer updateStudentInfo(Student student);
    

}

StudentMapper.xml:
在这里插入图片描述
上面是原有的代码内容,接下来就是继承原有mapper文件实现扩展功能的代码:

首先,创建一个StudentMapper.java的扩展接口命名为StudentExtMapper.java,在扩展接口StudentExtMapper.java中补充需要扩展的查询功能,并且StudentExtMapper.java需要继承StudentMapper.java,代码如下:
StudentExtMapper:

public interface StudentExtMapper extends StudentMapper{
    //根据id查询学生信息
    Student loadStudentInfoById(Integer studentId);
}

StudentExtMapper.xml:
这个时候同样需要创建StudentExtMapper对应的mapper文件,这是一一对应的映射关系,不能被改变的。
在这里插入图片描述
最关键的一步就是将原本的StudentMapper.xml文件中的namespace修改为StudentExtMapper接口的路径,因为StudentExtMapper已经继承了StudentMapper。
在这里插入图片描述

但是这个时候呢,StudentMapper.java中会报错,因为前面提到mapper接口与对应xml文件以及namespace是要保持一致的关系,这时需要进行最后一步操作,就是applicationContext.xml中配置,让StudentMapper.java不被扫描就可以了。

第二种

不需要继承整个mapper.xml文件,而是直接使用mapper.xml文件中的某个已定义好的公共sql语句。

比如说在一个mapper.xml文件中已经定义好了一个公告sql语句,如下:
在这里插入图片描述

直接在需要引入的mapper.xml文件中按照以下格式书写即可。使用include标签,refid属性的值必须是被引用的全包名和sql标签的id名
在这里插入图片描述



  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想养一只!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值