Mybatis基礎(chǔ)及簡單的增刪查(未瀏覽器頁面展示)

一徐钠、在pom.xml里添加mybatis依賴以及MariaDB的驅(qū)動依賴

<dependencies>
        <dependency>
            <groupId>mariadb</groupId>
            <artifactId>mariadb-java-client</artifactId>
            <version>1.8.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

二兵睛、在resource目錄下新建一個mybatis.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節(jié)點
        里面有配置信息 分別是環(huán)境和映射
         其中環(huán)境里有datasource辆影,里面有我們熟悉的連接數(shù)據(jù)庫的四個字符串
-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="org.mariadb.jdbc.Driver"/>
                <property name="url" value="jdbc:mariadb://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="yutong19970820"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="BookMapper.xml"/>
    </mappers>
</configuration>

三疾宏、在resource目錄下新建一個BookMapper.xml

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

<!--
    每個mapper文件都將有一個自己的映射的namespace昭卓,
    每個方法對應(yīng)自己的sql語句愤钾,每個sql語句對應(yīng)有一個id
    整個項目中所有的namespace.id必須是唯一的
    resultType:結(jié)果的數(shù)據(jù)類型
-->
<mapper namespace="BookMapper">
    <select id="selectAllBook" resultType="com.qianfeng.bean.BookBean">
        select * from springmvcbook
    </select>

    <select id="seletBookCount" resultType="int">
        select count (1) from springmvcbook
    </select>

    <select id="saveBook" resultType="com.qianfeng.bean.BookBean">
        insert into springmvcbook values (default,#{name},#{price})
    </select>
</mapper>

在這個配置文件中寫SQL語句進(jìn)行查詢、增加等操作
resultType:結(jié)果的數(shù)據(jù)類型候醒,也可以填Javabean的路徑
每個方法對應(yīng)自己的sql語句能颁,每個sql語句對應(yīng)有一個id。id可以理解為方法名
在增加操作中倒淫,values() 中的屬性寫法為#{伙菊?},如#{name}

四敌土、創(chuàng)建一個圖書類BookBean


public class BookBean {
    private int id;
    private String name;
    private double price;

    public BookBean(int id, String name, double price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    public BookBean() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("BookBean{");
        sb.append("id=").append(id);
        sb.append(", name='").append(name).append('\'');
        sb.append(", price=").append(price);
        sb.append('}');
        return sb.toString();
    }
}

五镜硕、測試類,進(jìn)行數(shù)據(jù)的操作

原版:
public class BookTest {

    @Test
    public void getAllBook() {
        try {
            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
            SqlSession session = sf.openSession(true);

            List<BookBean> list = session.selectList("BookMapper.selectAllBook");

            for (BookBean bookBean : list) {
                System.out.println(bookBean);
            }

            if (session!=null){
                session.close();
                session = null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    @Test
    public void getBookCount(){

        try {
            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
            SqlSession session = sf.openSession(true);

            Integer count = session.selectOne("BookMapper.seletBookCount");

            System.out.println(count);

            if (session!=null){
                session.close();
                session = null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    @Test
    public void saveBook(){

        try {
            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
            SqlSession session = sf.openSession(true);

            BookBean bookBean = new BookBean();
            bookBean.setName("贅婿");
            bookBean.setPrice(20.5);

            int result = session.insert("BookMapper.saveBook",bookBean);
            System.out.println(result);

            if (session!=null){
                session.close();
                session = null;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1返干、獲取全部圖書谦疾,存入List<>集合中,獲取時用session.selectList :session.selectList("BookMapper.selectAllBook");
2犬金、獲得圖書數(shù)量,用session.selectOne,且要用Integer
3晚顷、存入圖書峰伙,用session.insert
* 1. 使用mybatis的配置文件以及SqlSessionFactoryBuilder建造者模式創(chuàng)建SqlSessionFactory對象
* 2. 使用SqlSessionFactory對象的openSession()方法來得到一個SqlSession對象,用該對象即可完成對象的所有的crud操作
* 3. 使用SqlSession對象來完成crud操作
* 4. 關(guān)閉資源

簡化版:
public class BookTest2 {

    private SqlSessionFactory sf = null;
    private SqlSession session = null;

    /**
     *  1.  使用mybatis的配置文件以及SqlSessionFactoryBuilder建造者模式創(chuàng)建SqlSessionFactory對象
     *  2.  使用SqlSessionFactory對象的openSession()方法來得到一個SqlSession對象该默,用該對象即可完成對象的所有的crud操作
     *  3.  使用SqlSession對象來完成crud操作
     *  4.  關(guān)閉資源
     *
     */
    @Before
    public void setUp(){

        try {
            sf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));

            session = sf.openSession(true);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @After
    public void tearDown(){
        if(session != null){
            session.close();
            session = null;
        }
    }



    @Test
    public void getAllBook() {

        /**
         * session的crud方法("namespace.id");整個項目中的namespace.id必須唯一
         */
            List<BookBean> list = session.selectList("BookMapper.selectAllBook");

            for (BookBean bookBean : list) {
                System.out.println(bookBean);
            }
    }


    @Test
    public void getBookCount(){

            Integer count = session.selectOne("BookMapper.seletBookCount");

            System.out.println(count);
    }


    @Test
    public void saveBook(){

            BookBean bookBean = new BookBean();
            bookBean.setName("贅婿");
            bookBean.setPrice(20.5);

            int result = session.insert("BookMapper.saveBook",bookBean);
            System.out.println(result);
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載瞳氓,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末栓袖,一起剝皮案震驚了整個濱河市匣摘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌裹刮,老刑警劉巖音榜,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異捧弃,居然都是意外死亡赠叼,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門违霞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嘴办,“玉大人,你說我怎么就攤上這事买鸽〗Ы迹” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵眼五,是天一觀的道長妆艘。 經(jīng)常有香客問我,道長弹砚,這世上最難降的妖魔是什么双仍? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮桌吃,結(jié)果婚禮上朱沃,老公的妹妹穿的比我還像新娘。我一直安慰自己茅诱,他們只是感情好逗物,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著瑟俭,像睡著了一般翎卓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摆寄,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天失暴,我揣著相機(jī)與錄音坯门,去河邊找鬼。 笑死逗扒,一個胖子當(dāng)著我的面吹牛古戴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矩肩,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼现恼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了黍檩?” 一聲冷哼從身側(cè)響起叉袍,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎刽酱,沒想到半個月后喳逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡肛跌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年艺配,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衍慎。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡转唉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出稳捆,到底是詐尸還是另有隱情赠法,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布乔夯,位于F島的核電站砖织,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏末荐。R本人自食惡果不足惜侧纯,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甲脏。 院中可真熱鬧眶熬,春花似錦、人聲如沸块请。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽墩新。三九已至贸弥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間海渊,已是汗流浹背绵疲。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工哲鸳, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人最岗。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓帕胆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親般渡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

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

  • 1. 簡介 1.1 什么是 MyBatis 芙盘? MyBatis 是支持定制化 SQL驯用、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,523評論 0 4
  • mybatis 不會直接和數(shù)據(jù)庫進(jìn)行打交道,mybatis 其實是對 jdbc api 的進(jìn)一步封裝儒老,最終和數(shù)據(jù)庫...
    小毛1221閱讀 513評論 0 0
  • 之前在spring mvc + mybatis項目中對mybatis的使用有了一定的掌握蝴乔,但對于其內(nèi)部的具體實現(xiàn)并...
    天羽天閱讀 1,095評論 0 0
  • 之前在面試工作的時候,我當(dāng)時用的是hibernate驮樊,但是現(xiàn)在互聯(lián)網(wǎng)項目并發(fā)量大薇正,一般都會選擇使用Mybatis,...
    唐偉耀閱讀 557評論 1 0
  • 我已經(jīng)3天沒去上學(xué)了,原因是我又生病了囚衔,喉嚨痛挖腰,發(fā)燒咳嗽……媽媽說我的身體體質(zhì)太差了,一有感冒的我就跟著生病练湿。讓我...
    張遠(yuǎn)志閱讀 162評論 0 2