Java?MyBatis之Mapper代理詳解
Mapper代理
上一節(jié)MyBatis快速入們中依舊有硬編碼的部分:
List<Member> members = sqlSession.selectList("test.selectAll");

這里test.selectAll就是硬編碼,當(dāng)我們xml文件中sql語句較多時(shí),依舊不太方便,還沒有提示功能!,因此本節(jié)就介紹Mapper代理,使用Mapper代理方式完成上一篇的入門案例!
步驟如下圖:

對(duì)于第一步,請(qǐng)看下面目錄結(jié)構(gòu):

我們可以直接將MemberMapper.xml放到j(luò)ava.com.aniu.mapper目錄下,但這樣不符合項(xiàng)目規(guī)范,xml配置文件我們一般都放resources目錄,因此你需要在resources目錄建一個(gè)同樣的目錄,這樣Maven編譯后的class文件Member.Mapper和MemberMapper.xml依舊在同一個(gè)目錄:

需要注意的是,resources里面是目錄,我們不能以包的com.aniu.mapper的方式建立多層文件夾,應(yīng)該用com/aniu/mapper這種方式!
第二步:

命名空間設(shè)為Mapper接口的全限定名!
第三步:

需要注意的是要記得在配置文件中更改映射文件的路徑!

當(dāng)然,當(dāng)sql映射文件多了之后,mybatis配置文件中要導(dǎo)入的sql映射文件也就多了,我們用這種Mapper代理的方式,可以用包掃描方式一次引入所有的sql映射文件!

public class MyBatisDemo2 {
public static void main(String[] args) throws IOException {
//1. 加載mybatis的核心配置文件,獲取 SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2. 獲取SqlSession對(duì)象,用它來執(zhí)行sql
SqlSession sqlSession = sqlSessionFactory.openSession();
//3. 執(zhí)行sql (只有這塊需要手寫,其他步驟直接復(fù)制)
// List<Member> members = sqlSession.selectList("test.selectAll"); // 命名空間+id,這就是命名空間的作用:便于區(qū)分
MemberMapper memberMapper = sqlSession.getMapper(MemberMapper.class);
List<Member> members = memberMapper.selectAll();
System.out.println(members);
//4. 釋放資源
sqlSession.close();
}
}

到此這篇關(guān)于Java MyBatis之Mapper代理詳解的文章就介紹到這了,更多相關(guān)Java Mapper代理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringMVC獲取請(qǐng)求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼
這篇文章主要給大家介紹了SpringMVC獲取請(qǐng)求參數(shù)和域?qū)ο蠊蚕頂?shù)據(jù)的示例代碼,文中通過代碼示例給大家介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12
詳解Java編寫并運(yùn)行spark應(yīng)用程序的方法
這篇文章主要介紹了詳解Java編寫并運(yùn)行spark應(yīng)用程序的方法,內(nèi)容詳細(xì),結(jié)合了作者實(shí)際工作中的問題進(jìn)行具體分析,具有一定參考價(jià)值。2017-09-09
使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式
這篇文章主要介紹了使用maven-assembly-plugin如何將system 依賴范圍的jar以class 方式打包進(jìn) jar包中,本文給大家分享完美解決思路,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Java實(shí)現(xiàn)按年月打印日歷功能【基于Calendar】
這篇文章主要介紹了Java實(shí)現(xiàn)按年月打印日歷功能,涉及java基于Calendar進(jìn)行日期運(yùn)算的相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng)
這篇文章主要介紹了JPA如何設(shè)置表名和實(shí)體名,表字段與實(shí)體字段的對(duì)應(yīng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

