Mybatis概述筹陵、認(rèn)識

1闯参、什么是框架?

它是我們?nèi)缒羌_發(fā)中的一套解決方案,不同的框架解決的是不同的問題。
使用框架的好處:
    框架封裝了很多的細(xì)節(jié),使開發(fā)者可以使用極簡的方式實(shí)現(xiàn)功能寸莫。大大提高開發(fā)效率捺萌。

2、三層架構(gòu)

表現(xiàn)層:
    適用于展示數(shù)據(jù)的
業(yè)務(wù)層:
    是處理業(yè)務(wù)需求
持久層:
    是和數(shù)據(jù)庫交互的

3膘茎、持久層技術(shù)解決方案

JDBC技術(shù):
    Connection
    PreparedStatement
    ResultSet
Spring的JdbcTemplate:
    Spring中對jdbc的簡單封裝
Apache的DBUtils:
    它和Spring的JdbcTemplate很像,也是對Jdbc的簡單封裝
    
    以上這些都不是框架
        JDBC是規(guī)范
        Spring的JdbcTemplate和Apache的DBUtils都只是工具類

4桃纯、mybatis的概述

mybatis是一個(gè)持久層框架,用java編寫的。
它封裝了jdbc操作的很多細(xì)節(jié),使開發(fā)者只需要關(guān)注sql語句本身披坏,而無需關(guān)注注冊驅(qū)動态坦,創(chuàng)建連接等繁雜過程,
它使用了ORM思想實(shí)現(xiàn)了結(jié)果集的封裝.

ORM:
    Object Relational Mapping 對象關(guān)系映射
    簡單的說:
        就是把數(shù)據(jù)庫表和實(shí)體類及實(shí)體類的屬性對應(yīng)起來
        讓我們可以操作實(shí)體類就實(shí)現(xiàn)操作數(shù)據(jù)庫表棒拂。

5伞梯、mybatis的入門:

mybatis的環(huán)境搭建

        第一步:創(chuàng)建maven工程并導(dǎo)入坐標(biāo)
        第二步:創(chuàng)建實(shí)體類和dao的接口
        第三步:創(chuàng)建mybatis的主配置文件
              SqlMapConifg.xml
        第四步:創(chuàng)建映射配置文件
              IUserDao.xml
        環(huán)境搭建的注意事項(xiàng):
        第一個(gè):創(chuàng)建IUserDao.xml和IUserDao.java時(shí)名稱是為了和我們之前的知識保持一致,在mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper
        所以:IUserDao和IUserMapper是一樣的
        
        第二個(gè):在idea中創(chuàng)建目錄的時(shí)候,它和包是不一樣的帚屉,包在創(chuàng)建時(shí):com.itheima.dao它是三級結(jié)構(gòu)谜诫,目錄在創(chuàng)建時(shí):com.itheima.dao是一級目錄
      
        第三個(gè):mybatis的映射配置文件位置必須和dao結(jié)構(gòu)的包結(jié)構(gòu)相同

        第四個(gè):映射配置文件的mapper標(biāo)簽namespace屬性的取值必須是dao接口的全限定類名

        第五個(gè):映射配置文件的操作配置,id屬性的取值必須是dao接口的方法名

        當(dāng)我們遵從了第三、四攻旦、五點(diǎn)之后喻旷,我們在開發(fā)中就無須再寫dao的實(shí)現(xiàn)類。

數(shù)據(jù)庫中的字段:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL COMMENT '用戶名稱',
  `birthday` datetime DEFAULT NULL COMMENT '生日',
  `sex` char(1) DEFAULT NULL COMMENT '性別',
  `address` varchar(256) DEFAULT NULL COMMENT '地址',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8;

創(chuàng)建maven工程 導(dǎo)入所需要的依賴:

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.14</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

對應(yīng)的實(shí)體類:

package com.itheima.domain;

import java.io.Serializable;
import java.util.Date;

/**
 * @ClassName User
 * @Description TODO
 * @Author gkz
 * @Date 2019/8/18 16:43
 * @Version 1.0
 **/
public class User implements Serializable {

    private Integer id;

    private String username;

    private Date birthday;

    private String sex;

    private String address;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

對應(yīng)的dao層接口:

package com.itheima.dao;

import com.itheima.domain.User;

import java.util.List;

public interface IUserDao {

    List<User>findAll();
}

resources包下新建SqlMapConfig.xml(名字無規(guī)定,但是一般叫這個(gè)),SqlMapConfig里的配置:

<?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">
<!--mybatis的主配置文件-->
<configuration>
    <!--配置環(huán)境-->
    <environments default="mysql">
        <!--配置mysql的環(huán)境-->
        <environment id="mysql">
            <!-- 配置事務(wù)的類型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置數(shù)據(jù)源 (連接池)-->
            <dataSource type="POOLED">
                <!-- 配置連接數(shù)據(jù)庫的基本信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/eesy"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定映射配置文件的位置 ,映射配置文件指的是每個(gè)dao獨(dú)立的配置文件-->
    <mappers>
        <mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
    </mappers>
</configuration>

其中mybatis的主要配置文件中的mapper里的屬性resource節(jié)點(diǎn)對應(yīng)的是resources包下的xml文件牢屋,這里可以看到

image.png

resources下有一個(gè)com.itheima.dao下有一個(gè)IUserDao.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="com.itheima.dao.IUserDao">
    <select id="findAll">
        select * from user;
    </select>
</mapper>

其中 namespace節(jié)點(diǎn)對應(yīng)的是dao層的接口,這里可以看到:


image.png

select中的id節(jié)點(diǎn)所對應(yīng)的是接口里的方法名稱,里面寫sql語句.那么Mybatis的初步搭建就已經(jīng)完成了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末且预,一起剝皮案震驚了整個(gè)濱河市槽袄,隨后出現(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)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著灌曙,像睡著了一般菊碟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上在刺,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天逆害,我揣著相機(jī)與錄音,去河邊找鬼蚣驼。 笑死忍燥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的隙姿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼厂捞,長吁一口氣:“原來是場噩夢啊……” “哼输玷!你這毒婦竟也來了队丝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤欲鹏,失蹤者是張志新(化名)和其女友劉穎机久,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赔嚎,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膘盖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尤误。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侠畔。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖损晤,靈堂內(nèi)的尸體忽然破棺而出软棺,到底是詐尸還是另有隱情,我是刑警寧澤尤勋,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布喘落,位于F島的核電站,受9級特大地震影響最冰,放射性物質(zhì)發(fā)生泄漏瘦棋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一暖哨、第九天 我趴在偏房一處隱蔽的房頂上張望赌朋。 院中可真熱鬧,春花似錦鹿蜀、人聲如沸箕慧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颠焦。三九已至,卻和暖如春往枣,著一層夾襖步出監(jiān)牢的瞬間伐庭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工分冈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圾另,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓雕沉,卻偏偏與公主長得像集乔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子坡椒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

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