01_Mybatis-Plus入門

1.了解

圖片.png
圖片.png
image.png
圖片.png

2.快速入門

2.1.創(chuàng)建數(shù)據(jù)庫(kù)以及表

圖片.png
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=cjchnws1991 \
mysql:5.6
-- 創(chuàng)建測(cè)試表
CREATE TABLE `tb_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
  `user_name` varchar(20) NOT NULL COMMENT '用戶名',
  `password` varchar(20) NOT NULL COMMENT '密碼',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年齡',
  `email` varchar(50) DEFAULT NULL COMMENT '郵箱',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

-- 插入測(cè)試數(shù)據(jù)
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('1', 'zhangsan', '123456', '張三', '18', 'test1@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('2', 'lisi', '123456', '李四', '20', 'test2@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('3', 'wangwu', '123456', '王五', '28', 'test3@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('4', 'zhaoliu', '123456', '趙六', '21', 'test4@itcast.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES ('5', 'sunqi', '123456', '孫七', '24', 'test5@itcast.cn');

2.2.mybatis查詢

不用骨架創(chuàng)建maven工程


圖片.png
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lines.mp</groupId>
    <artifactId>bj-mybatis-plus</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- mybatis-plus插件依賴 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.1.1</version>
        </dependency>
        <!-- MySql -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- 連接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.11</version>
        </dependency>
        <!--簡(jiǎn)化bean代碼的工具包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

創(chuàng)建子模塊


圖片.png
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>bj-mybatis-plus</artifactId>
        <groupId>com.lines.mp</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mybatis-plus-simple</artifactId>


</project>
圖片.png
圖片.png
圖片.png

2.3.mybatis+MP查詢

圖片.png
圖片.png
圖片.png

2.4.Spring+mybatis+MP查詢

圖片.png

test下也需要一份配置文件煤裙,否則報(bào)錯(cuò)
圖片.png
圖片.png

2.5.SpringBoot+mybatis+MP查詢

圖片.png
圖片.png
圖片.png
圖片.png

3.通用crud詳解

3.1.插入

圖片.png
圖片.png
圖片.png

3.2.TableField

  • 對(duì)象中的屬性名和字段名不一致的問(wèn)題
  • 對(duì)象中的屬性字段在表中不存在的問(wèn)題
  • 查詢的時(shí)候不想查某些字段
  • 上述三條實(shí)際生產(chǎn)不用


    圖片.png

3.3.更新

圖片.png

3.4.刪除

圖片.png

實(shí)際使用基本都是根據(jù)id刪除

3.5.查詢

圖片.png
圖片.png

分頁(yè)查詢,增加配置類
圖片.png
圖片.png

3.6.SQL注入原理

圖片.png
圖片.png
圖片.png
圖片.png
圖片.png
  • ISqlInjector接口負(fù)責(zé)SQL注入
  • ISqlInjector的實(shí)現(xiàn)類AbstractSqlInjector的inspectInject方法負(fù)責(zé)檢查注入
  • inspectInject方法中的關(guān)鍵是methodList.forEach(m -> m.inject(builderAssistant, mapperClass, modelClass, tableInfo));
  • AbstractMethod.inject注入自定義方法玩荠,核心方法是 injectMappedStatement(mapperClass, modelClass, tableInfo);
  • injectMappedStatement是抽象方法渤愁,看看哪些類實(shí)現(xiàn)了這個(gè)抽象方法
  • 發(fā)現(xiàn)BaseMapper所提供的方法都是對(duì)應(yīng)一個(gè)一個(gè)的類,且這些類都實(shí)現(xiàn)了injectMappedStatement方法
  • 以SelectById為例薯蝎,生成SQL語(yǔ)句德绿,最終return this.addSelectMappedStatementForTable(mapperClass, getMethod(sqlMethod), sqlSource, tableInfo);
  • 最終實(shí)現(xiàn)BaseMapper中的一系列的方法注冊(cè)到meppedStatements中

4.配置

4.1.configLocation

圖片.png
圖片.png
圖片.png

4.2.mapperLocations

圖片.png
圖片.png

4.3.typeAliasesPackage

圖片.png
圖片.png

4.4.mapUnderscoreToCamelCase&cacheEnabled

圖片.png
圖片.png
圖片.png

4.5.DB策略配置

圖片.png

全局設(shè)置辕录,可以不用每個(gè)實(shí)體類都設(shè)置了
圖片.png

最好的使用場(chǎng)景:表名統(tǒng)一tb_+實(shí)體類名

5.條件構(gòu)造器

5.1.AllEq

圖片.png
圖片.png

5.2.Eq

圖片.png
圖片.png

5.3.模糊查詢

圖片.png
圖片.png

5.4.排序

圖片.png
圖片.png

5.5.邏輯查詢

圖片.png
圖片.png

5.6.select

在MP查詢中昵仅,默認(rèn)查詢所有的字段缓熟,如果有需要也可以通過(guò)select方法進(jìn)行指定字段。
圖片.png

6.源代碼

https://gitee.com/baojun521/bj-mybatis-plus.git
https://gitee.com/baojun521/lines-mp-springboot.git

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末摔笤,一起剝皮案震驚了整個(gè)濱河市够滑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吕世,老刑警劉巖彰触,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異命辖,居然都是意外死亡况毅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門尔艇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)俭茧,“玉大人,你說(shuō)我怎么就攤上這事漓帚。” “怎么了午磁?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵尝抖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我迅皇,道長(zhǎng)昧辽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任登颓,我火速辦了婚禮搅荞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己咕痛,他們只是感情好痢甘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著茉贡,像睡著了一般塞栅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腔丧,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天放椰,我揣著相機(jī)與錄音,去河邊找鬼愉粤。 笑死砾医,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的衣厘。 我是一名探鬼主播如蚜,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼头滔!你這毒婦竟也來(lái)了怖亭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤坤检,失蹤者是張志新(化名)和其女友劉穎兴猩,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體早歇,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡倾芝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了箭跳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨另。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖谱姓,靈堂內(nèi)的尸體忽然破棺而出借尿,到底是詐尸還是另有隱情,我是刑警寧澤屉来,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布路翻,位于F島的核電站,受9級(jí)特大地震影響茄靠,放射性物質(zhì)發(fā)生泄漏茂契。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一慨绳、第九天 我趴在偏房一處隱蔽的房頂上張望掉冶。 院中可真熱鬧真竖,春花似錦、人聲如沸厌小。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)召锈。三九已至旁振,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間涨岁,已是汗流浹背拐袜。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梢薪,地道東北人蹬铺。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秉撇,于是被迫代替她去往敵國(guó)和親甜攀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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