中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatisplus中QueryWrapper的使用方法有哪些

發布時間:2023-05-09 16:20:58 來源:億速云 閱讀:117 作者:iii 欄目:開發技術

這篇文章主要介紹“Mybatisplus中QueryWrapper的使用方法有哪些”,在日常操作中,相信很多人在Mybatisplus中QueryWrapper的使用方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Mybatisplus中QueryWrapper的使用方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、 MyBatis-Plus

MyBatis-Plus (opens new window)(簡稱 MP)是一個 MyBatis (opens new window)的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。

mp的簡單使用
現有一張 User 表,其表結構如下:

Mybatisplus中QueryWrapper的使用方法有哪些

其對應的數據庫 Schema 腳本如下:

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主鍵ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年齡',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
    PRIMARY KEY (id)
);

其對應的數據庫 Data 腳本如下:

DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

初始化工程
創建一個空的 Spring Boot 工程(工程將以 H2 作為默認數據庫進行演示)

提示

可以使用 Spring Initializer (opens new window)快速初始化一個 Spring Boot 工程

#添加依賴
引入 Spring Boot Starter 父工程:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5+ 版本</version>
    <relativePath/>
</parent>

引入 spring-boot-starter、spring-boot-starter-test、mybatis-plus-boot-starter、h3 依賴:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>最新版本</version>
    </dependency>
    <dependency>
        <groupId>com.h3database</groupId>
        <artifactId>h3</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

配置
在 application.yml 配置文件中添加 H2 數據庫的相關配置:

# DataSource Config
spring:
  datasource:
    driver-class-name: org.h3.Driver
    schema: classpath:db/schema-h3.sql
    username: root
    password: test
  sql:
    init:
      schema-locations: classpath:db/schema-h3.sql
      data-locations: classpath:db/data-h3.sql

在 Spring Boot 啟動類中添加 @MapperScan 注解,掃描 Mapper 文件夾:

@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {

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

}

#編碼
編寫實體類 User.java(此處使用了 Lombok (opens new window)簡化代碼)

@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

編寫 Mapper 包下的 UserMapper接口

public interface UserMapper extends BaseMapper<User> {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->}

開始使用
添加測試類,進行功能測試:

@SpringBootTest
public class SampleTest {

    @Autowired
    private UserMapper userMapper;

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

}

提示

UserMapper 中的 selectList() 方法的參數為 MP 內置的條件封裝器 Wrapper,所以不填寫就是無任何條件

控制臺輸出:

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)

提示

完整的代碼示例請移步:Spring Boot 快速啟動示例 (opens new window)| Spring MVC 快速啟動示例(opens new window)

小結
通過以上幾個簡單的步驟,我們就實現了 User 表的 CRUD 功能,甚至連 XML 文件都不用編寫!

從以上步驟中,我們可以看到集成MyBatis-Plus非常的簡單,只需要引入 starter 工程,并配置 mapper 掃描路徑即可。

但 MyBatis-Plus 的強大遠不止這些功能,JAVA開發愛好者在使用mybatis-plus的時候,經常使用的是QueryWrapper,QueryWrapper繼承自 AbstractWrapper ,自身的內部屬性 entity 也用于生成 where 條件及 LambdaQueryWrapper, 可以通過 new QueryWrapper().lambda() 方法獲取,下面總結了幾種不同的用法:

二、MP&ndash;>QueryWrapper 5種更新語句不同寫法:

/**
 * 第一種,常用寫法
 */
public void updateUser1(){
    //方式一:
    User user = new User();
    user.setAge(29);
    user.setEmail("111111111111.com");

    QueryWrapper queryWrapper = new QueryWrapper();
    queryWrapper.eq("name","Tom");
    update(user,queryWrapper);

}

/**
 * 第二種 UpdateWrapper
 */

public void updateUser2(){

    update(null,new UpdateWrapper<User>().set("age",29)
            .set("email","22222222222222.com").eq("name","Tom"));
}

/**
 * 第三種實體類+LambdaUpdateWrapper
 */

public void updateUser3(){
    User user = new User();
    user.setAge(29);
    user.setEmail("3333333.com");

    update(user,new LambdaUpdateWrapper<User>(
    ).eq(User::getName,"Tom"));
}

/**
 * 第四種 LambdaUpdateWrapper
 */
public void updateUser4(){
    update(null,new LambdaUpdateWrapper<User>().set(User::getAge,29)
            .set(User::getEmail,"4444444.com").eq(User::getName,"Tom"));


}

/**
 * 第五種:Wrappers
 */
public void updateUser5(){

    update(null,Wrappers.<User>update().lambda()
            .set(User::getAge,29)
            .set(User::getEmail,"555555555.com")
            .eq(User::getName,"Tom"));

}

/**
 * 第五種:實體類+Wrappers
 */
public void updateUser6(){
    User user = new User();
    user.setAge(29);
    user.setEmail("6666666.com");
    update(user,Wrappers.<User>update().lambda()

            .eq(User::getName,"Tom"));

}

三、三種查詢語句不同寫法:

/**
 * 第一種查詢
 * @return
 */
public  List<User> selectListUser(){
    List<User> list = baseMapper.selectList(
      Wrappers.<User>lambdaQuery()
            .eq(User::getName, "Tom"));
     return  list;
}

/**
 * 第二種查詢
 * @return
 */
public IPage<Map<String, Object>> listPageUser(){
    Page<Map<String, Object>> mapPage = 
      baseMapper.selectMapsPage(
            new Page<>(1, 5), Wrappers.<User>query()
                    .orderByAsc("id"));

    return  mapPage;
}
/**
 * 第三種查詢
 * @return
 */
public List<User> listUser(){
    LambdaQueryWrapper<User> lambdaQueryWrapper = new QueryWrapper<User>()
      .lambda();


    List<User> users = baseMapper.selectList(lambdaQueryWrapper);

    return  users;
}

到此,關于“Mybatisplus中QueryWrapper的使用方法有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇雄县| 阿荣旗| 闸北区| 额尔古纳市| 西昌市| 阿坝县| 栾城县| 阿克陶县| 灌南县| 白山市| 长海县| 白河县| 富顺县| 金昌市| 锦州市| 冷水江市| 乐安县| 辽阳县| 老河口市| 泊头市| 靖西县| 永清县| 新干县| 洛川县| 阿拉尔市| 英山县| 广元市| 浦县| 龙口市| 景德镇市| 玉山县| 林甸县| 禹城市| 绍兴市| 富锦市| 柞水县| 怀集县| 昌乐县| 深泽县| 桐梓县| 北宁市|