Mybatis中映射器實現方式總結


一種是通過XML文件方式(由一個java接口和一個XML文件構成)

RoleMapper rm = session.getMapper(RoleMapper.class);
List<Role> roleList = rm.readAll();

 

二種是通過java注解方式(直接在java接口里寫注解配置sql,需要addMapper(xxMapper.class)顯式注冊映射類)

session.addMapper(RoleMapper.class);
RoleMapper rm = session.getMapper(RoleMapper.class);
List<Role> roleList = rm.readAll();

 

 

三種其實是iBatis遺留的通過 "命名空間(namespace)+SQL id"的方式發送SQL並返回數據的方式,只要有一個XML文件,而不需要去獲取映射器

String statement = "cn.zdp.mapping.roleMapper.getRole";// 映射sql的標識字符串
Role role = session.selectOne(statement, 6);

 

 總結就是一、三都需要XML文件,二不需要XML文件

一、二需要java接口,三不需要java接口

那么我們還用通過頭兩種方式搞個接口嗎,答案是肯定的,通過接口可以進一步屏蔽SqlSession這個對象,降低耦合。也是MyBatis比iBatis升級的地方。

那么干脆通過方式二直接注解sql配置到接口也省了XML文件了,但是貌似sql寫到java代碼里不能實現分離功能了。這個就看實際需求是簡單還是分離了。

 

SpringMVC+MyBatis的話更方便了,mybatis-spring可以將mapper接口自動生成代理

在applicationContext中配置Mybatis MapperScannerConfigurer 自動掃描 將Mapper接口生成代理注入到Spring

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    	<property name="basePackage" value="cn.baseapp.dao"/>
</bean>

 

 

附圖,引入映射器的方式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM