MyBatisPlus

瓜亭發表於2024-10-18

一,MybatisPlus基礎

1.1要使用mybatisPlus需要的兩個步驟;

1.引入MybatisPlus的依賴

點選檢視程式碼
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

因為此依賴包含了mybatis的起步依賴,所以完全可以代替mybatis的起步依賴。

2.對mapper的定義
在我們自己定義的mapper介面中,讓介面實現BaseMapper介面,BaseMapper中已經定義了基本的CRUD方法(單表),可以直接使用。
BaseMapper中的方法:
image
注意:繼承的BaseMapper的時候需要指定泛型,這樣才能知道方法針對的表,示例:
image

1.2常用註解:

  • @TableName(實體類中使用)
    是表名標註,標註實體類中對應的表。
  • @TableId(實體類中使用)
    是實體類的主鍵註解,標明實體類中的主鍵。
    本註解中有一個經常使用的屬性,IdType
    image
  • @TableField(在實體類中使用)
    是普通欄位上面的註解,一般情況是不需要使用這個註解,在特殊情況下使用:
    image

2.1較複雜的方法

以上都是一些簡單的CRUD,還有更多相對複雜的方法,在使用這些複雜方法的時候,除了新增方法,其他方法都會使用到查新條件,也就是where條件,示例如下:
image
所有我們可以使用條件構造器作為Wrapper條件。
wrapper是條件構造的抽象類,有很多的實現類,Wrapper的實現類的繼承關係如下:
image
image
其中QueryWrapper在父類AbstractWrapper的基礎上增加了selet方法,允許查詢指定的欄位。
其中UpdateWrapper在父類AbstractWrapper的基礎上增加了set方法,允許指定SQL中的set部分。

2.2複雜方法的實際使用

2.2.1QueryWrapper的使用:
這個類的使用不僅限於查詢,還可以在刪除和修改的時候使用。
查詢:查詢出名字中帶o的,存款大於等於1000元的人。

點選檢視程式碼
@Test
void testQueryWrapper() {
    // 1.構建查詢條件 where name like "%o%" AND balance >= 1000
    QueryWrapper<User> wrapper = new QueryWrapper<User>()
            .select("id", "username", "info", "balance")
            .like("username", "o")
            .ge("balance", 1000);
    // 2.查詢資料
    List<User> users = userMapper.selectList(wrapper);
    users.forEach(System.out::println);
}

更新:更新使用者名稱為jack的使用者的餘額為2000。

點選檢視程式碼
@Test
void testUpdateByQueryWrapper() {
    // 1.構建查詢條件 where name = "Jack"
    QueryWrapper<User> wrapper = new QueryWrapper<User>().eq("username", "Jack");
    // 2.更新資料,user中非null欄位都會作為set語句
    User user = new User();
    user.setBalance(2000);
    userMapper.update(user, wrapper);
}

相關文章