摘要:繼承機制地址實際上隱藏了一個功能可以繼承,這個在官方文檔中并沒有提到過,不過在這個里提到過。覆蓋利用的繼承機制,我們可以做到覆蓋中。
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:
規(guī)律可以總結(jié)為:
ParentMapper.xml中有,ChildMapper.xml中沒有,ChildMapper沿用ParentMapper.xml中的定義
ParentMapper.xml中有,ChildMapper.xml中也有,ChildMapper使用ChildMapper.xml中的定義
ParentMapper.xml中沒有,ChildMapper.xml中有,ChildMapper使用ChildMapper.xml中的定義
相關(guān)代碼: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:
相關(guān)代碼:Java代碼、測試代碼、配置文件
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70856.html
摘要:最終能和面試官聊的開心愉快投緣的叫面霸。能夠與很好的集成提供映射標簽,支持對象與數(shù)據(jù)庫的字段關(guān)系映射提供對象關(guān)系映射標簽,支持對象關(guān)系組件維護。使用可以有效的防止注入,提高系統(tǒng)安全性。 showImg(https://segmentfault.com/img/bVbsSlt?w=358&h=269); 一、概述 面試,難還是不難?取決于面試者的底蘊(氣場+技能)、心態(tài)和認知及溝通技巧。...
摘要:優(yōu)化當我們在數(shù)據(jù)庫中增加字段時,需要在對應(yīng)的實體類中增加字段,中也需要去增加字段,去維護,會消耗大量的時間我們可以讓接口去繼承,刪除接口中的所有方法,因為中都已經(jīng)實現(xiàn)了。遇到這里問題不會報錯,只要注意打印出來的語句即可。 SpringBoot集成Mybatis 自動生成實體類和Mapper 1.使用IDEA創(chuàng)建一個空的SpringBoot項目 2.在pom.xml中引入以下配置 ...
摘要:建議不要在元素體內(nèi)添加任何屬性值,只將屬性值定義在文件中。在文件中定義屬性名要有一定的特殊性防止覆蓋,如配置全局參數(shù),在運行時可以調(diào)整一些運行參數(shù)。同樣需要遵守上面的規(guī)范。動態(tài)核心對語句進行靈活操作,通過表達式進行判斷,對進行靈活拼接組裝。 Hibernate與Mybatis的本質(zhì)區(qū)別和應(yīng)用場景 Hibernate:標準的ORM框架,不需要寫SQL語句,但是優(yōu)化和修改SQL語句比較...
摘要:緩存介紹正如大多數(shù)持久層框架一樣,同樣提供了一級緩存和二級緩存的支持一級緩存基于的本地緩存,其存儲作用域為,當或之后,該中的所有就將清空。一級緩存實現(xiàn)對的操作內(nèi)部都是通過來執(zhí)行的。 MyBatis緩存介紹 正如大多數(shù)持久層框架一樣,MyBatis 同樣提供了一級緩存和二級緩存的支持 一級緩存: 基于PerpetualCache 的 HashMap本地緩存,其存儲作用域為 Se...
摘要:通過插件更優(yōu)雅地生成和的樣板代碼通過插件不污染地實現(xiàn)優(yōu)雅分頁。使用步驟引入依賴,在或的配置中進行配置。提供語法提示自動補全錯誤提示導航功能。該插件提供了類似的功能,根據(jù)接口的方法名推斷含義,然后在中直接生成對應(yīng)的。 團隊使用Mybatis作為數(shù)據(jù)庫訪問框架。不同于Hibernate這種采用經(jīng)典面向?qū)ο笏枷朐O(shè)計的ORM框架,Mybatis是面向過程的,它只做了過程到SQL語句的映射。兩者...
閱讀 750·2021-11-24 09:39
閱讀 3317·2021-11-23 10:06
閱讀 1086·2021-10-08 10:05
閱讀 894·2019-08-30 10:49
閱讀 1877·2019-08-29 14:08
閱讀 1401·2019-08-29 12:48
閱讀 3409·2019-08-26 14:04
閱讀 3754·2019-08-26 13:50