SpringBoot 集成 MyBatis-Plus

  1. MyBatic-Plus 簡介
  2. SpringBoot 集成MyBatis-Plus
  3. 分頁查詢

簡介

MyBatis-Plus(簡稱 MP)是一個(gè) MyBatis 的增強(qiáng)工具蛉拙,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變拼缝,為簡化開發(fā)浆竭、提高效率而生予弧。官方網(wǎng)址

核心功能: 代碼生成器不铆,CURD接口四敞,條件構(gòu)造器桐玻,分頁插件,Sequence主鍵提揍,自定義ID生成器
插件擴(kuò)展: 熱加載啤月,邏輯刪除,通用枚舉劳跃,字段類型處理器谎仲,自動(dòng)填充功能,Sql注入器刨仑,攻擊SQL阻斷解析器郑诺,性能分析插件夹姥,執(zhí)行SQL分析打印,樂觀鎖插件辙诞,動(dòng)態(tài)數(shù)據(jù)源辙售,分布式事務(wù),多租戶SQL解析器飞涂,動(dòng)態(tài)表名SQL解析器旦部,MybatisX快速開發(fā)插件

SpringBoot 集成 MyBatis-Plus

  1. 創(chuàng)建一個(gè)Web項(xiàng)目,添加依賴
    https://start.spring.io/较店,pom 文件如下:
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
  1. 在application.yml 文件中配置mysql
# DataSource Config
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
    username: root
    password: root
  1. 編寫實(shí)體類,Mapper類
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
public interface UserMapper extends BaseMapper<User> {
}
  1. 在 Spring Boot 啟動(dòng)類中添加 @MapperScan 注解士八,掃描 Mapper 文件夾:
@SpringBootApplication
@MapperScan("top.lconcise.mapper")
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

目錄結(jié)構(gòu)如下:


image.png
  1. 測試:
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void contextLoads() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        Assert.assertEquals(5, userList.size());
        userList.forEach(System.out::println);
    }
}

控制臺(tái)輸出:

User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=test2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

通過以上幾個(gè)簡單的步驟,我們就實(shí)現(xiàn)了 User 表的 CRUD 功能梁呈,甚至連 XML 文件都不用編寫婚度!

分頁查詢

  1. 配置
@EnableTransactionManagement
@Configuration
@MapperScan("com.baomidou.cloud.service.*.mapper*")
public class MybatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        // 設(shè)置請求的頁面大于最大頁后操作, true調(diào)回到首頁官卡,false 繼續(xù)請求  默認(rèn)false
        // paginationInterceptor.setOverflow(false);
        // 設(shè)置最大單頁限制數(shù)量蝗茁,默認(rèn) 500 條,-1 不受限制
        // paginationInterceptor.setLimit(500);
        return paginationInterceptor;
    }
}
  1. 編碼
public interface UserMapper extends BaseMapper<User> {

    IPage<User> selectPageVo(Page page, @Param("name") String name);
}

編寫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="top.lconcise.mapper.UserMapper">

    <select id="selectPageVo" resultType="top.lconcise.domain.User">
        SELECT id,`name` FROM user WHERE true
        <if test="name != null and name !=''">AND `name` LIKE CONCAT('%',#{name},'%')</if>
    </select>

</mapper>
  1. 對于IDEA系列編輯器寻咒,XML 文件是不能放在 java 文件夾中的哮翘,IDEA 默認(rèn)不會(huì)編譯源碼文件夾中的 XML 文件,可以參照以下方式解決:
  • 指定 POM 文件的 resource
    <build>
        <resources>
            <resource>
                <!-- xml放在java目錄下-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/mapper/*.xml</include>
                </includes>
            </resource>
            <!--指定資源的位置(xml放在resources下仔涩,可以不用指定)-->
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
      <build>
  1. 測試:
    @Test
    public void contextLoads() {
        IPage<User> userIPage = userMapper.selectPageVo(new Page(1, 5), "J");
        userIPage.getRecords().forEach(System.out::println);
    }

控制臺(tái)輸出:

User(id=1, name=Jone, age=null, email=null)
User(id=2, name=Jack, age=null, email=null)

參考官方文檔:https://mybatis.plus/guide/faq.html#%E8%87%AA%E5%AE%9A%E4%B9%89-sql-%E6%97%A0%E6%B3%95%E6%89%A7%E8%A1%8C

源碼地址:https://github.com/lbshold/springboot/tree/master/SpringBoot-MyBatisPlus

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忍坷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子熔脂,更是在濱河造成了極大的恐慌,老刑警劉巖柑肴,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件霞揉,死亡現(xiàn)場離奇詭異,居然都是意外死亡晰骑,警方通過查閱死者的電腦和手機(jī)适秩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硕舆,“玉大人秽荞,你說我怎么就攤上這事「Ч伲” “怎么了扬跋?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凌节。 經(jīng)常有香客問我钦听,道長洒试,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任朴上,我火速辦了婚禮垒棋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘痪宰。我一直安慰自己叼架,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布衣撬。 她就那樣靜靜地躺著碉碉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪淮韭。 梳的紋絲不亂的頭發(fā)上婉商,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機(jī)與錄音躬络,去河邊找鬼休傍。 笑死,一個(gè)胖子當(dāng)著我的面吹牛占键,可吹牛的內(nèi)容都是我干的昔善。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼畔乙,長吁一口氣:“原來是場噩夢啊……” “哼君仆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起牲距,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤返咱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后牍鞠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咖摹,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年难述,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萤晴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胁后,死狀恐怖店读,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情攀芯,我是刑警寧澤屯断,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響裹纳,放射性物質(zhì)發(fā)生泄漏择葡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一剃氧、第九天 我趴在偏房一處隱蔽的房頂上張望敏储。 院中可真熱鬧,春花似錦朋鞍、人聲如沸已添。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽更舞。三九已至,卻和暖如春坎吻,著一層夾襖步出監(jiān)牢的瞬間缆蝉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工瘦真, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刊头,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓诸尽,卻偏偏與公主長得像原杂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子您机,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

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