Mybatis_筆記

mybatis-config.xml

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3  "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
 4  
 5  <configuration>
 6      <properties resource="jdbc.properties">
 7          
 8      </properties>
 9      <environments default="development">
10          <environment id="development">
11             <transactionManager type="JDBC"/>         
12              <dataSource type="POOLED">
13                  <property name="driver" value="${driver}"/>
14                  <property name="url" value="${url}"/>
15                  <property name="username" value="${username}"/>
16                  <property name="password" value="${password}"/>
17              </dataSource>
18          </environment>
19      </environments>
20      
21      <mappers>
22          <mapper resource="dao/UserMapper.xml"/>
23      </mappers>
24  </configuration>

UserMapper.xml

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
 4 
 5 <mapper namespace="dao.UserMapper">
 6     <select id="count" resultType="int">
 7         select count(1) from user
 8     </select>
 9     
10 </mapper>

UserTest

1 package test;
 2 
 3 import static org.junit.Assert.*;
 4 
 5 import java.io.IOException;
 6 import java.io.InputStream;
 7 
 8 import org.apache.ibatis.io.Resources;
 9 import org.apache.ibatis.session.SqlSession;
10 import org.apache.ibatis.session.SqlSessionFactory;
11 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
12 import org.apache.log4j.Logger;
13 import org.junit.Test;
14 
15 public class UserTest {
16     private Logger logger = Logger.getLogger(UserTest.class);
17         
18     @Test
19     public void countTest() {
20         String resource = "mybatis-config.xml";
21         int count = 0;
22         SqlSession sqlSession = null;
23         //1,讀取配置文件mybatis-config.xml輸入流
24         try {
25             InputStream is = Resources.getResourceAsStream(resource);
26             //2,創(chuàng)建sqlsessionfactory
27             SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
28             //3,創(chuàng)建sqlsession
29             sqlSession =     factory.openSession();
30             //4,調用mapper配置文件
31             count = sqlSession.selectOne("dao.UserMapper.count");
32             
33             logger.debug(count);
34         } catch (IOException e) {
35             e.printStackTrace();
36         }finally{
37             sqlSession.close();
38         }
39         
40         
41         
42     }
43 
44 }

SqlSessionFactory必須是單例枝缔,所以可以用下面這個方法:

靜態(tài)方法:在項目啟動時就會被初始化,所以可以直接調用鹿寨。
靜態(tài)代碼塊:在項目啟動時主動執(zhí)行。



與JDBC的對比:

連表查詢時,返回多張表的數(shù)據(jù)時:

1试读,可以自定義一個resultMap,這個方式是要多返回Role表里的roleName字段蔓罚,所以在User類里加了個roleName屬性椿肩。

2,可以自定義一個resultMap,這個方式是要多返回Role表里的多個字段豺谈,所以在User類里加了內部類(Role類型)郑象,<association>標簽關聯(lián)Role。

3茬末,根據(jù)User表的ID查詢Address表里的數(shù)據(jù)厂榛,一對多±霾眩可以用如下方法击奶。

動態(tài)標簽之forEach:

這個是要更新50000條數(shù)據(jù),1000條一執(zhí)行责掏。
如果List,collection="list"柜砾,如果是Array,collection="array"。
item就是定義的集合或數(shù)組名字换衬,也可以自定義痰驱,這里叫Item。




mybatis緩存:

一級緩存作用域是session瞳浦,二級緩存是全局共享担映。



讓mybatis后以輸出SQL語句,用的是Log4j

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末叫潦,一起剝皮案震驚了整個濱河市另萤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖四敞,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泛源,死亡現(xiàn)場離奇詭異,居然都是意外死亡忿危,警方通過查閱死者的電腦和手機达箍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铺厨,“玉大人缎玫,你說我怎么就攤上這事〗庾遥” “怎么了赃磨?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長洼裤。 經常有香客問我邻辉,道長,這世上最難降的妖魔是什么腮鞍? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任值骇,我火速辦了婚禮,結果婚禮上移国,老公的妹妹穿的比我還像新娘吱瘩。我一直安慰自己,他們只是感情好迹缀,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布使碾。 她就那樣靜靜地躺著,像睡著了一般祝懂。 火紅的嫁衣襯著肌膚如雪部逮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天嫂易,我揣著相機與錄音兄朋,去河邊找鬼。 笑死怜械,一個胖子當著我的面吹牛颅和,可吹牛的內容都是我干的。 我是一名探鬼主播缕允,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼峡扩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了障本?” 一聲冷哼從身側響起教届,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤响鹃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后案训,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體买置,經...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年强霎,在試婚紗的時候發(fā)現(xiàn)自己被綠了忿项。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡城舞,死狀恐怖轩触,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情家夺,我是刑警寧澤脱柱,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站拉馋,受9級特大地震影響榨为,放射性物質發(fā)生泄漏。R本人自食惡果不足惜椅邓,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一柠逞、第九天 我趴在偏房一處隱蔽的房頂上張望昧狮。 院中可真熱鬧景馁,春花似錦、人聲如沸逗鸣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽撒璧。三九已至透葛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卿樱,已是汗流浹背僚害。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留繁调,地道東北人萨蚕。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像蹄胰,于是被迫代替她去往敵國和親岳遥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內容

  • 一派继、輸入映射 通過parameterType指定輸入?yún)?shù)的類型,類型可以是簡單類型捻艳、HashMap驾窟、pojo的包裝...
    yjaal閱讀 957評論 0 2
  • 一纫普、什么是延遲加載 延遲加載:先從單表查詢、需要時再從關聯(lián)表去關聯(lián)查詢好渠,大大提高數(shù)據(jù)庫性能昨稼。 resultMap可...
    yjaal閱讀 2,986評論 0 3
  • 一假栓、原理 第一次SqlSession1去查詢用戶id為1的用戶信息,查詢到用戶信息將會將查詢到的數(shù)據(jù)存儲到二級緩存...
    yjaal閱讀 1,559評論 0 3
  • Mybatis 基礎用法 sql數(shù)據(jù),建表,注意主外鍵 關系, 以及建立db.properties 建立pojo文...
    Chauncey_Chen閱讀 363評論 0 0
  • 悶騷 是一種格調 很有味道 隻因 心裡有料 有譜可靠 才有把握 到 爆霍掺! 我連瞄一眼 都不需要 就知道 世界已被我...
    霖靂盡致閱讀 421評論 0 1