十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
KeyWords: Mybatis 原理,源碼,Mybatis Mapper 接口實(shí)現(xiàn)類,代理模式,動(dòng)態(tài)代理,Java動(dòng)態(tài)代理,
Proxy.newProxyInstance,Mapper 映射,Mapper 實(shí)現(xiàn)
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。我們?cè)谑褂?Mybaits 進(jìn)行 ,通常只需要定義幾個(gè) Mapper 接口,然后在編寫一個(gè) xml 文件,我們?cè)谂渲梦募袑懞?sql , Mybatis 幫我們完成 Mapper 接口道具體實(shí)現(xiàn)的調(diào)用。以及將結(jié)果映射到 model bean 中。
我們?cè)陧?xiàng)目中所編寫的眾多的 Mapper 類只是一個(gè)接口(interface ),根據(jù) Java 的多態(tài)性我們知道,可以使用接口接口作為形參,進(jìn)而在運(yùn)行時(shí)確定具體實(shí)現(xiàn)的對(duì)象是什么。但是,對(duì)于 Mapper 接口,我們并沒有編寫其實(shí)現(xiàn)類!Mybatis是如何找到其實(shí)現(xiàn)類,進(jìn)而完成具體的 CRUD 方法調(diào)用的呢?原理何在?
Mapper 接口是怎么找到實(shí)現(xiàn)類的
為了弄清楚 Mapper 接口是如何找到實(shí)現(xiàn)類的,我們先回憶一下 Mybatis 是怎么使用的,根據(jù)實(shí)際的例子,進(jìn)而一點(diǎn)點(diǎn)的去分析。這里的使用指的是Mybatis 單獨(dú)使用,而不是整合 spring , 因?yàn)檎?spring 的話,還需要涉及 Mapper dao 裝載到 spring 容器的問題,spring 幫忙創(chuàng)建數(shù)據(jù)源配置等問題。
通常我們使用 Mybatis 的主要步驟是:
從一段代碼看起
上面我們概括了使用 Mybatis 的4個(gè)步驟。這4個(gè)步驟看起來很簡(jiǎn)單,但是用代碼寫出來就很多。我們不妨先記著這4個(gè)步驟,再去看代碼,會(huì)容易點(diǎn)。
// 1. DataSource dataSource = BlogDataSourceFactory.getBlogDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory(); Environment environment = new Environment("development", transactionFactory, dataSource); Configuration configuration = new Configuration(environment); configuration.addMapper(BlogMapper.class);// 添加Mapper接口 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration); // 2. SqlSession session = sqlSessionFactory.openSession(); try { // 3. BlogMapper mapper = session.getMapper(BlogMapper.class); // 4. Blog blog = mapper.selectBlog(1); } finally { session.close(); }
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。