MybatisPlus較全常用復(fù)雜查詢的示例(limit、orderby、groupby、having、like...)
MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生。以下是 MyBatis-Plus 中常用復(fù)雜查詢(如 LIMIT、ORDER BY、GROUP BY、HAVING、LIKE 等)的引例:
1. 環(huán)境準(zhǔn)備
首先,確保你已經(jīng)在項(xiàng)目中添加了 MyBatis-Plus 的依賴。以 Maven 為例:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>2. 實(shí)體類和 Mapper 接口
假設(shè)我們有一個(gè) User 實(shí)體類和對(duì)應(yīng)的 UserMapper 接口:
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user")
public class User {
@TableId
private Long id;
private String name;
private Integer age;
private String email;
}import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}3. 常用復(fù)雜查詢示例
3.1LIMIT查詢
LIMIT 用于限制查詢結(jié)果的數(shù)量。在 MyBatis-Plus 中,可以使用 Page 類來(lái)實(shí)現(xiàn)類似 LIMIT 的功能。
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersWithLimit(int pageNum, int pageSize) {
Page<User> page = new Page<>(pageNum, pageSize);
IPage<User> userPage = userMapper.selectPage(page, null);
return userPage.getRecords();
}
}3.2ORDER BY查詢
ORDER BY 用于對(duì)查詢結(jié)果進(jìn)行排序。在 MyBatis-Plus 中,可以使用 QueryWrapper 來(lái)實(shí)現(xiàn)排序。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersOrderByAgeDesc() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.orderByDesc("age");
return userMapper.selectList(wrapper);
}
}3.3GROUP BY和HAVING查詢
GROUP BY 用于對(duì)查詢結(jié)果進(jìn)行分組,HAVING 用于篩選分組后的結(jié)果。在 MyBatis-Plus 中,可以使用 QueryWrapper 結(jié)合 groupBy 和 having 方法來(lái)實(shí)現(xiàn)。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<Map<String, Object>> getUsersGroupByAgeHavingCount() {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("age", "COUNT(*) as count")
.groupBy("age")
.having("COUNT(*) > 1");
return userMapper.selectMaps(wrapper);
}
}3.4LIKE查詢
LIKE 用于模糊查詢。在 MyBatis-Plus 中,可以使用 QueryWrapper 的 like 方法來(lái)實(shí)現(xiàn)。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getUsersLikeName(String keyword) {
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.like("name", keyword);
return userMapper.selectList(wrapper);
}
}4. 測(cè)試代碼
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.List;
import java.util.Map;
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private UserService userService;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... args) throws Exception {
// LIMIT 查詢
List<User> usersWithLimit = userService.getUsersWithLimit(1, 10);
System.out.println("LIMIT 查詢結(jié)果:" + usersWithLimit);
// ORDER BY 查詢
List<User> usersOrderByAgeDesc = userService.getUsersOrderByAgeDesc();
System.out.println("ORDER BY 查詢結(jié)果:" + usersOrderByAgeDesc);
// GROUP BY 和 HAVING 查詢
List<Map<String, Object>> usersGroupByAgeHavingCount = userService.getUsersGroupByAgeHavingCount();
System.out.println("GROUP BY 和 HAVING 查詢結(jié)果:" + usersGroupByAgeHavingCount);
// LIKE 查詢
List<User> usersLikeName = userService.getUsersLikeName("張");
System.out.println("LIKE 查詢結(jié)果:" + usersLikeName);
}
}以上示例展示了 MyBatis-Plus 中常用復(fù)雜查詢的使用方法,你可以根據(jù)實(shí)際需求進(jìn)行調(diào)整。
到此這篇關(guān)于MybatisPlus較全常用復(fù)雜查詢的示例(limit、orderby、groupby、having、like...)的文章就介紹到這了,更多相關(guān)MybatisPlus 復(fù)雜查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA創(chuàng)建springboot依賴下載很慢的解決方法
maven會(huì)使用遠(yuǎn)程倉(cāng)庫(kù)來(lái)加載依賴,是一個(gè)國(guó)外的網(wǎng)站,所以會(huì)很慢,本文主要介紹了IDEA創(chuàng)建springboot依賴下載很慢的解決方法,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12
Servlet關(guān)于RequestDispatcher的原理詳解
這篇文章主要介紹了Servlet關(guān)于RequestDispatcher的原理詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
SpringCloud Netfilx Ribbon負(fù)載均衡工具使用方法介紹
Ribbon是Netflix的組件之一,負(fù)責(zé)注冊(cè)中心的負(fù)載均衡,有助于控制HTTP和TCP客戶端行為。Spring Cloud Netflix Ribbon一般配合Ribbon進(jìn)行使用,利用在Eureka中讀取的服務(wù)信息,在調(diào)用服務(wù)節(jié)點(diǎn)時(shí)合理進(jìn)行負(fù)載2022-12-12
Java實(shí)現(xiàn)簡(jiǎn)易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲(附源碼)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)簡(jiǎn)易版聯(lián)網(wǎng)坦克對(duì)戰(zhàn)小游戲的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Hibernate傳入Java對(duì)象創(chuàng)建動(dòng)態(tài)表并錄入數(shù)據(jù)
這篇文章主要介紹了Hibernate傳入Java對(duì)象創(chuàng)建動(dòng)態(tài)表并錄入數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Java通過(guò)python命令執(zhí)行DataX任務(wù)的實(shí)例
今天小編就為大家分享一篇Java通過(guò)python命令執(zhí)行DataX任務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Resttemplate中設(shè)置超時(shí)時(shí)長(zhǎng)方式
這篇文章主要介紹了Resttemplate中設(shè)置超時(shí)時(shí)長(zhǎng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
maven插件maven-assembly-plugin打包歸納文件zip/tar使用
java項(xiàng)目運(yùn)行的文件需要jar或者war格式,同時(shí)還需要使用Java命令,本文主要介紹了maven插件maven-assembly-plugin打包歸納文件zip/tar使用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02

