MyBatis執(zhí)行流程

搭建一個簡單的Mybatis+Maven項(xiàng)目

Maven依賴

  <!-- 添加log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <!-- 添加mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.6</version>
        </dependency>
        <!-- 添加mysql驅(qū)動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.12</version>
        </dependency>
        <!-- 添加junit驅(qū)動 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.14.8</version>
        </dependency>

代碼


@Data
public class Student {
    private Long id;
    private String name;
}

public interface StudentDao {
        public void insert(Student student);
        public Student findUserById (int id);
        public List<Student> findAllUsers();
}

public class StudentDaoTest {
    @Test
    public void findUserById() {
        SqlSession sqlSession = getSessionFactory().openSession();
        StudentDao userMapper = sqlSession.getMapper(StudentDao.class);
        Student user = userMapper.findUserById(1);
        System.out.println(user.toString());
    }

    //Mybatis 通過SqlSessionFactory獲取SqlSession, 然后才能通過SqlSession與數(shù)據(jù)庫進(jìn)行交互
    private static SqlSessionFactory getSessionFactory() {
        SqlSessionFactory sessionFactory = null;
        String resource = "configuration.xml";
        try {
            sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader(resource));
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sessionFactory;
    }
}

配置文件

//configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- 指定properties配置文件何址, 我這里面配置的是數(shù)據(jù)庫相關(guān) -->
    <properties resource="dbConfig.properties"></properties>
    <!-- 指定Mybatis使用log4j -->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/student"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 映射文件片习,mybatis精髓倒源, 后面才會細(xì)講 -->
    <mappers>
        <mapper resource="userDao-mapping.xml"/>
    </mappers>
</configuration>
//userDao-mapping.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
        "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.mybatis.StudentDao">
    <select id="findUserById" resultType="com.mybatis.Student" >
        select * from student where id = #{id}
    </select>
</mapper>   

通過SqlSessionFactory獲取SqlSession

執(zhí)行流程

獲取MapperProxy

執(zhí)行流程

獲取Excutor

執(zhí)行流程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市抢蚀,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拌汇,老刑警劉巖瞧预,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異榨惰,居然都是意外死亡拜英,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門琅催,熙熙樓的掌柜王于貴愁眉苦臉地迎上來居凶,“玉大人,你說我怎么就攤上這事藤抡∠辣蹋” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵缠黍,是天一觀的道長弄兜。 經(jīng)常有香客問我,道長瓷式,這世上最難降的妖魔是什么替饿? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮贸典,結(jié)果婚禮上视卢,老公的妹妹穿的比我還像新娘。我一直安慰自己廊驼,他們只是感情好据过,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布颊埃。 她就那樣靜靜地躺著,像睡著了一般蝶俱。 火紅的嫁衣襯著肌膚如雪班利。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天榨呆,我揣著相機(jī)與錄音罗标,去河邊找鬼。 笑死积蜻,一個胖子當(dāng)著我的面吹牛闯割,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竿拆,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼宙拉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丙笋?” 一聲冷哼從身側(cè)響起谢澈,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎御板,沒想到半個月后锥忿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怠肋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年敬鬓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笙各。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡钉答,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杈抢,到底是詐尸還是另有隱情数尿,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布春感,位于F島的核電站砌创,受9級特大地震影響虏缸,放射性物質(zhì)發(fā)生泄漏鲫懒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一刽辙、第九天 我趴在偏房一處隱蔽的房頂上張望窥岩。 院中可真熱鬧,春花似錦宰缤、人聲如沸颂翼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽朦乏。三九已至球及,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間呻疹,已是汗流浹背吃引。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刽锤,地道東北人镊尺。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像并思,于是被迫代替她去往敵國和親庐氮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361

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

  • 1. 簡介 1.1 什么是 MyBatis 宋彼? MyBatis 是支持定制化 SQL弄砍、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,527評論 0 4
  • 1 引言# 本文主要講解JDBC怎么演變到Mybatis的漸變過程,重點(diǎn)講解了為什么要將JDBC封裝成Mybait...
    七寸知架構(gòu)閱讀 76,497評論 36 980
  • MyBatis是一個可以自定義SQL输涕、存儲過程和高級映射的持久層框架输枯。MyBatis 摒除了大部分的JDBC代碼、...
    七寸知架構(gòu)閱讀 6,710評論 6 56
  • 前面的章節(jié)主要講mybatis如何解析配置文件占贫,這些都是一次性的初始化過程桃熄。從本章開始講解動態(tài)的過程,它們跟應(yīng)用程...
    七寸知架構(gòu)閱讀 4,949評論 2 55
  • 第一天:“明天在做啦型奥⊥眨” 第二天晚:“哎呦,忘記做最那件事了厢汹,唉螟深,算了算了,先玩會手機(jī)再說烫葬〗缁。” 第三天早:“媽呀,...
    弓長兌閱讀 420評論 0 0