资讯专栏INFORMATION COLUMN

Mybatis Mapper.xml继承机制

Jeffrrey / 1361人阅读

摘要:继承机制地址实际上隐藏了一个功能可以继承,这个在官方文档中并没有提到过,不过在这个里提到过。覆盖利用的继承机制,我们可以做到覆盖中。

Mapper.xml继承机制

github地址

Mybatis实际上隐藏了一个功能:Mapper.xml可以继承,这个在官方文档中并没有提到过,不过在这个issue (commit)里提到过。

Statement覆盖

利用Mapper.xml的继承机制,我们可以做到ChildMapper覆盖ParentMapper中selectinsertdeleteupdate。下面举例说明:

Interface:

@MybatisMapper
public interface ParentMapper {

  String selectFoo();

  String selectBar();
}

@MybatisMapper
public interface ChildMapper extends ParentMapper {

  String selectLoo();

}

Mapper.xml:



  

  





  
  

  

  
  

规律可以总结为:

ParentMapper.xml中有,ChildMapper.xml中没有,ChildMapper沿用ParentMapper.xml中的定义

ParentMapper.xml中有,ChildMapper.xml中也有,ChildMapper使用ChildMapper.xml中的定义

ParentMapper.xml中没有,ChildMapper.xml中有,ChildMapper使用ChildMapper.xml中的定义

相关代码:Java代码、测试代码、配置文件

ResultMap覆盖

Mapper.xml继承机制只针对statement有效,对于sqlresultMap是无效的。
如果要在ChildMapper.xml中覆盖这些,必须要先覆盖ParentMapper.xml中的statement,然后让这些statement使用新的sqlresultMap等。

下面举例一个给ITEM表添加字段,但是不修改原来的ItemMapper的例子:

Model:

public class Item {

  private Integer id;
  private String title;
  // setter and getter ...
}

public class ItemEx extends Item {

  private String name;
  // setter and getter ...

}

Interface:

@MybatisMapper
public interface ItemMapper {

  Item getById(@Param("id") Long id);

}
@MybatisMapper
public interface ItemExMapper extends ItemMapper {

}

Mapper.xml:



  

  
    
  





  
  

  
    
  

相关代码:Java代码、测试代码、配置文件

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70856.html

相关文章

  • 面试官都会问的Mybatis面试题,你会这样回答吗?

    摘要:最终能和面试官聊的开心愉快投缘的叫面霸。能够与很好的集成提供映射标签,支持对象与数据库的字段关系映射提供对象关系映射标签,支持对象关系组件维护。使用可以有效的防止注入,提高系统安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。...

    seanHai 评论0 收藏0
  • SpringBoot集成Mybatis 自动生成实体类和Mapper

    摘要:优化当我们在数据库中增加字段时,需要在对应的实体类中增加字段,中也需要去增加字段,去维护,会消耗大量的时间我们可以让接口去继承,删除接口中的所有方法,因为中都已经实现了。遇到这里问题不会报错,只要注意打印出来的语句即可。 SpringBoot集成Mybatis 自动生成实体类和Mapper 1.使用IDEA创建一个空的SpringBoot项目 2.在pom.xml中引入以下配置 ...

    codercao 评论0 收藏0
  • MyBatis学习笔记(二)——DAO的开发、配置文件、动态SQL

    摘要:建议不要在元素体内添加任何属性值,只将属性值定义在文件中。在文件中定义属性名要有一定的特殊性防止覆盖,如配置全局参数,在运行时可以调整一些运行参数。同样需要遵守上面的规范。动态核心对语句进行灵活操作,通过表达式进行判断,对进行灵活拼接组装。 Hibernate与Mybatis的本质区别和应用场景 Hibernate:标准的ORM框架,不需要写SQL语句,但是优化和修改SQL语句比较...

    plus2047 评论0 收藏0
  • MyBatis缓存介绍

    摘要:缓存介绍正如大多数持久层框架一样,同样提供了一级缓存和二级缓存的支持一级缓存基于的本地缓存,其存储作用域为,当或之后,该中的所有就将清空。一级缓存实现对的操作内部都是通过来执行的。 MyBatis缓存介绍   正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持   一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se...

    mingde 评论0 收藏0
  • 【效率专精系列】善用插件提升MyBatis开发效率

    摘要:通过插件更优雅地生成和的样板代码通过插件不污染地实现优雅分页。使用步骤引入依赖,在或的配置中进行配置。提供语法提示自动补全错误提示导航功能。该插件提供了类似的功能,根据接口的方法名推断含义,然后在中直接生成对应的。 团队使用Mybatis作为数据库访问框架。不同于Hibernate这种采用经典面向对象思想设计的ORM框架,Mybatis是面向过程的,它只做了过程到SQL语句的映射。两者...

    Kylin_Mountain 评论0 收藏0

发表评论

0条评论

Jeffrrey

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<