摘要:继承机制地址实际上隐藏了一个功能可以继承,这个在官方文档中并没有提到过,不过在这个里提到过。覆盖利用的继承机制,我们可以做到覆盖中。
Mapper.xml继承机制
github地址
Mybatis实际上隐藏了一个功能:Mapper.xml可以继承,这个在官方文档中并没有提到过,不过在这个issue (commit)里提到过。
Statement覆盖利用Mapper.xml的继承机制,我们可以做到ChildMapper覆盖ParentMapper中select、insert、delete、update。下面举例说明:
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有效,对于sql、resultMap是无效的。
如果要在ChildMapper.xml中覆盖这些,必须要先覆盖ParentMapper.xml中的statement,然后让这些statement使用新的sql、resultMap等。
下面举例一个给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
摘要:最终能和面试官聊的开心愉快投缘的叫面霸。能够与很好的集成提供映射标签,支持对象与数据库的字段关系映射提供对象关系映射标签,支持对象关系组件维护。使用可以有效的防止注入,提高系统安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。...
摘要:优化当我们在数据库中增加字段时,需要在对应的实体类中增加字段,中也需要去增加字段,去维护,会消耗大量的时间我们可以让接口去继承,删除接口中的所有方法,因为中都已经实现了。遇到这里问题不会报错,只要注意打印出来的语句即可。 SpringBoot集成Mybatis 自动生成实体类和Mapper 1.使用IDEA创建一个空的SpringBoot项目 2.在pom.xml中引入以下配置 ...
摘要:建议不要在元素体内添加任何属性值,只将属性值定义在文件中。在文件中定义属性名要有一定的特殊性防止覆盖,如配置全局参数,在运行时可以调整一些运行参数。同样需要遵守上面的规范。动态核心对语句进行灵活操作,通过表达式进行判断,对进行灵活拼接组装。 Hibernate与Mybatis的本质区别和应用场景 Hibernate:标准的ORM框架,不需要写SQL语句,但是优化和修改SQL语句比较...
摘要:缓存介绍正如大多数持久层框架一样,同样提供了一级缓存和二级缓存的支持一级缓存基于的本地缓存,其存储作用域为,当或之后,该中的所有就将清空。一级缓存实现对的操作内部都是通过来执行的。 MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se...
摘要:通过插件更优雅地生成和的样板代码通过插件不污染地实现优雅分页。使用步骤引入依赖,在或的配置中进行配置。提供语法提示自动补全错误提示导航功能。该插件提供了类似的功能,根据接口的方法名推断含义,然后在中直接生成对应的。 团队使用Mybatis作为数据库访问框架。不同于Hibernate这种采用经典面向对象思想设计的ORM框架,Mybatis是面向过程的,它只做了过程到SQL语句的映射。两者...
阅读 633·2021-11-24 09:39
阅读 2958·2021-11-23 10:06
阅读 963·2021-10-08 10:05
阅读 736·2019-08-30 10:49
阅读 1686·2019-08-29 14:08
阅读 1283·2019-08-29 12:48
阅读 3304·2019-08-26 14:04
阅读 3590·2019-08-26 13:50