接口式編程

MyBatis接口式編程

一、原始方法:

1.編寫sql映射文件

<!-- sql映射文件 -->
<mapper namespace="org.test.example.ProductMapper">
    <select id="selectProduct" resultType="mytest.dao.Product">
        SELECT * FROM product p WHERE p.id = #{id};
    </select>
</mapper>

2.通過sql映射文件中namespace和id屬性來定位Sql的位置炉旷,使用SqlSession對(duì)象的selectOne方法傳遞需要的參數(shù)arg并執(zhí)行指定位置的Sql語句。

public class MyBatisTest{
    public void MyTest(){
        String resource = "mybatis-config.xml";
        IntputStream intputStream = Resources.getResourceAsStream();
        SqlSessionFactory factory = newSqlSessionFactoryBuilder().bulid(intputStream);
        SqlSession sqlSession = factory.openSession();
        /** selectOne(String statement, Object parameter):
         *     statement :即sql映射文件中的namespace和id構(gòu)成:namespace.id
         *     parameter :傳遞給sql映射文件的值
         */
        Product p = sqlSession.selectOne("org.test.example.ProductMapper.selectProduct", 1L);
    }
}

該方法直接通過sql映射文件中namespace和id屬性來定位Sql的位置叉讥,要使用不同的方法砾跃,要改變id的值,看起來很不簡(jiǎn)潔节吮,不夠面向?qū)ο蟆?/p>

二、接口式編程

1.創(chuàng)建Mapper接口判耕,并定義一個(gè)getProductById方法透绩,用來通過id獲取product對(duì)象。

public interface ProductMapper {
    Product getProductById(Long id);
}

2.sql映射文件中的namespace屬性為Mapper接口的全限定名,id為Mapper接口中對(duì)應(yīng)的方法

<!-- sql映射文件 -->
<mapper namespace="mytest.dao.ProductMapper">
    <select id="getProductById" resultType="mytest.dao.Product">
        SELECT * FROM product p WHERE p.id = #{id};
    </select>
</mapper>

3.調(diào)用sqlSession對(duì)象中的getMapper(Class<T> type)方法來綁定Mapper接口,并獲取Mapper對(duì)象。Mapper對(duì)象擁有接口中的方法帚豪,可直接使用碳竟,例如:使用getProductById方法從數(shù)據(jù)庫中獲取 id= 1 的Product對(duì)象。

public class MyBatisTest{
    public void MyTest(){
        String resource = "mybatis-config.xml";
        IntputStream intputStream = Resources.getResourceAsStream();
        SqlSessionFactory factory = newSqlSessionFactoryBuilder().bulid(intputStream);
        SqlSession sqlSession = factory.openSession();
        /** getMapper(Class<T> type)
            type: Mapper interface class.傳入Mapper接口class綁定接口
         */
        ProductMapper mapper = sqlSession.getMapper(ProductMapper.class);
        Product p = mapper.getProductById(1L);
    }
}

總結(jié):比起原始方式狸臣,接口式編程的方法調(diào)用更加直觀莹桅,更加面向?qū)ο螅岣吡丝勺x性和可操作性烛亦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诈泼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子煤禽,更是在濱河造成了極大的恐慌铐达,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檬果,死亡現(xiàn)場(chǎng)離奇詭異瓮孙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)选脊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門杭抠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人恳啥,你說我怎么就攤上這事偏灿。” “怎么了角寸?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵菩混,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我扁藕,道長(zhǎng)沮峡,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任亿柑,我火速辦了婚禮邢疙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘望薄。我一直安慰自己疟游,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布痕支。 她就那樣靜靜地躺著颁虐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卧须。 梳的紋絲不亂的頭發(fā)上另绩,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天儒陨,我揣著相機(jī)與錄音,去河邊找鬼笋籽。 笑死蹦漠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的车海。 我是一名探鬼主播笛园,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼侍芝!你這毒婦竟也來了研铆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤竭贩,失蹤者是張志新(化名)和其女友劉穎蚜印,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體留量,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡窄赋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了楼熄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片忆绰。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖可岂,靈堂內(nèi)的尸體忽然破棺而出错敢,到底是詐尸還是另有隱情,我是刑警寧澤缕粹,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布稚茅,位于F島的核電站,受9級(jí)特大地震影響平斩,放射性物質(zhì)發(fā)生泄漏亚享。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一绘面、第九天 我趴在偏房一處隱蔽的房頂上張望欺税。 院中可真熱鬧,春花似錦揭璃、人聲如沸晚凿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歼秽。三九已至,卻和暖如春情组,著一層夾襖步出監(jiān)牢的瞬間哲银,已是汗流浹背扛吞。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留荆责,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓亚脆,卻偏偏與公主長(zhǎng)得像做院,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子濒持,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 键耕? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評(píng)論 0 4
  • 前言 主題是Mybatis一級(jí)和二級(jí)緩存的應(yīng)用及源碼分析柑营。希望在本場(chǎng)chat結(jié)束后屈雄,能夠幫助讀者朋友明白以下三點(diǎn)。...
    余平的余_余平的平閱讀 1,327評(píng)論 0 12
  • 前面已經(jīng)配置好了mybatis的開發(fā)環(huán)境官套,并且實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的查詢酒奶。這種方式是使用SqlSession實(shí)例來直接執(zhí)...
    StrongZhao閱讀 538評(píng)論 0 3
  • 有一段時(shí)間我?guī)缀鯚o法正常生活。我是眼睜睜地看著祖母咽氣的奶赔,這和祖父不同惋嚎。祖父走的很突然,我接到通知到家的時(shí)候他安安...
    tangying閱讀 246評(píng)論 0 0
  • 早上,揉了揉睡眼惺忪的眼鏡穿著拖鞋走到陽臺(tái)绞旅, 感受新的一天的到來摆尝,秋天來了,北方的寒氣也悄悄地來了∫虮現(xiàn)在的霧霾稍微...
    境北閱讀 867評(píng)論 5 3