国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

spring boot集成mybatis-plus——Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)...

這篇具有很好參考價(jià)值的文章主要介紹了spring boot集成mybatis-plus——Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)...。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)

?更新時(shí)間 2023-01-03 21:41:38

大家好,我是小哈。

本小節(jié)中,我們將學(xué)習(xí)如何通過 Mybatis Plus 實(shí)現(xiàn)多表關(guān)聯(lián)查詢,以及分頁關(guān)聯(lián)查詢。

表結(jié)構(gòu)

本文以查詢用戶所下訂單,來演示 Mybatis Plus 的關(guān)聯(lián)查詢,數(shù)據(jù)庫表除了前面小節(jié)中已經(jīng)定義好的用戶表外,再額外創(chuàng)建一張訂單表,然后插入一些測試數(shù)據(jù),執(zhí)行腳本如下:

DROP TABLE IF EXISTS user; CREATE TABLE `t_user` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NULL DEFAULT NULL COMMENT '年齡', `gender` tinyint(2) NOT NULL DEFAULT 0 COMMENT '性別,0:女 1:男', PRIMARY KEY (`id`) ) COMMENT = '用戶表'; INSERT INTO `t_user` (`id`, `name`, `age`, `gender`) VALUES (1, '犬小哈', 30, 1); INSERT INTO `t_user` (`id`, `name`, `age`, `gender`) VALUES (2, '關(guān)羽', 46, 1); INSERT INTO `t_user` (`id`, `name`, `age`, `gender`) VALUES (3, '諸葛亮', 26, 1); CREATE TABLE `t_order` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主鍵ID', `order_id` bigint(20) UNSIGNED NOT NULL COMMENT '訂單ID', `user_id` bigint(20) UNSIGNED NOT NULL COMMENT '下單用戶ID', `goods_name` varchar(30) NOT NULL COMMENT '商品名稱', `goods_price` decimal(10,2) NOT NULL COMMENT '商品價(jià)格', PRIMARY KEY (`id`), INDEX idx_order_id(`order_id`) ) COMMENT = '訂單表'; INSERT INTO `t_order` (`id`, `order_id`, `user_id`, `goods_name`, `goods_price`) VALUES (1, 805646264648356, 1, 'Switch 游戲機(jī)', 1400.00); INSERT INTO `t_order` (`id`, `order_id`, `user_id`, `goods_name`, `goods_price`) VALUES (2, 551787441310504, 1, '小米手機(jī)', 2000.00); INSERT INTO `t_order` (`id`, `order_id`, `user_id`, `goods_name`, `goods_price`) VALUES (3, 938562101633493, 2, '《三國演義》', 66.00); INSERT INTO `t_order` (`id`, `order_id`, `user_id`, `goods_name`, `goods_price`) VALUES (4, 791129917310894, 3, '華為手機(jī)', 1200.00); INSERT INTO `t_order` (`id`, `order_id`, `user_id`, `goods_name`, `goods_price`) VALUES (5, 208722395587361, 3, '《西游記》', 56.00); 

需求分析

假設(shè)前端需要展示數(shù)據(jù)有如下幾個(gè)字段:訂單號(hào)、商品名稱、商品價(jià)格、下單用戶姓名、下單用戶年齡、下單用戶性別:

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql

則對(duì)應(yīng)的關(guān)聯(lián) SQL 語句如下:

select o.order_id, o.goods_name, o.goods_price, u.name, u.age, u.gender
        from t_order as o left join t_user as u on o.user_id = u.id 

項(xiàng)目結(jié)構(gòu)

先貼一張項(xiàng)目結(jié)構(gòu),下面所創(chuàng)建的類與文件可參考這里:

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql

實(shí)體類

接下來,我們定義實(shí)體類。創(chuàng)建一個(gè)?OrderVO?視圖類,用于傳輸給前端展示:

/**
 * @author: 犬小哈
 * @from: 公眾號(hào):小哈學(xué)Java, 網(wǎng)站:www.quanxiaoha.com
 * @date: 2022-12-13 14:13
 * @version: v1.0.0 * @description: TODO **/ @Data public class OrderVO { /** * 訂單ID */ private Long orderId; /** * 下單用戶ID */ private Long userId; /** * 商品名稱 */ private String goodsName; /** * 商品價(jià)格 */ private BigDecimal goodsPrice; /** * 用戶名 */ private String userName; /** * 年齡 */ private Integer userAge; /** * 性別 */ private Integer userGender; } 

TIP:?@Data?是 Lombok 注解,偷懶用的,加上它即可免寫繁雜的?getXXX/setXXX?相關(guān)方法,不了解的小伙伴可自行搜索一下如何使用。

開始關(guān)聯(lián)查詢

簡單的關(guān)聯(lián)查詢

創(chuàng)建?UserMapper?, 讓其繼承自?BaseMapper?, 并自定義一個(gè)查詢訂單列表的方法:

public interface UserMapper extends BaseMapper<User> { // 查詢訂單列表 List<OrderVO> selectOrders(); } 

在項(xiàng)目的?resource?目錄下新建?mapper?文件夾,并在?mapper?文件夾中創(chuàng)建?UserMapper.xml?文件:

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql

UserMapper.xml?中編寫關(guān)聯(lián)語句,以及需要映射的對(duì)象,內(nèi)容如下:

<?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="com.quanxiaoha.mybatisplusdemo.mapper.UserMapper"> <resultMap id="orderMap" type="com.quanxiaoha.mybatisplusdemo.model.OrderVO"> <result property="userName" column="name"/> <result property="userAge" column="age"/> <result property="userGender" column="gender"/> <result property="orderId" column="order_id"/> <result property="userId" column="user_id"/> <result property="goodsName" column="goods_name"/> <result property="goodsPrice" column="goods_price"/> </resultMap> <select id="selectOrders" resultMap="orderMap"> select o.order_id, o.user_id, o.goods_name, o.goods_price, u.name, u.age, u.gender from t_order as o left join t_user as u on o.user_id = u.id </select> </mapper> 

創(chuàng)建完了?UserMapper.xml?文件后,還需要在?applicatoin.yml?中添加如下配置,告訴 Mybatis Plus 框架去掃描這些?xml?文件:

mybatis-plus:
  mapper-locations: classpath:/mapper/*Mapper.xml

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql

然后,創(chuàng)建一個(gè)單元測試看看好不好使:

@Autowired
private UserMapper userMapper;

@Test
void testSelectOrders() { List<OrderVO> orderVOS = userMapper.selectOrders(); } 

執(zhí)行上面的單元測試,實(shí)際執(zhí)行 SQL 為:

select o.order_id, o.user_id, o.goods_name, o.goods_price, u.name, u.age, u.gender from t_order as o left join t_user as u on o.user_id = u.id 

返回?cái)?shù)據(jù)如下:

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql

到這里,一個(gè)簡單的關(guān)聯(lián)查詢就搞定了。

帶分頁的關(guān)聯(lián)查詢

實(shí)際開發(fā)場景中,很多關(guān)聯(lián)查詢都需要結(jié)合分頁一起使用,假設(shè)上面展示的數(shù)據(jù)需要分頁展示,且需要支持條件查詢,要怎么做呢?

定義關(guān)聯(lián)查詢分頁方法

在?UserMapper?接口中再定義支持分頁的關(guān)聯(lián)查詢方法:

public interface UserMapper extends BaseMapper<User> { //... IPage<OrderVO> selectOrderPage(IPage<OrderVO> page, @Param(Constants.WRAPPER) QueryWrapper<OrderVO> wrapper); //... } 

TIP : 可以看到我們定義的關(guān)聯(lián)分頁查詢和 Myatis Plus 內(nèi)部提供的分頁方法相差不大,仔細(xì)看入?yún)?,我們?fù)用了 Mybatis Plus 內(nèi)部提供的分頁類IPage,以及?QueryWrapper?(用于組裝?where?條件)。

然后在?UserMapper.xml?中創(chuàng)建該方法對(duì)應(yīng)的關(guān)聯(lián)查詢:

<?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="com.quanxiaoha.mybatisplusdemo.mapper.UserMapper"> <resultMap id="orderMap" type="com.quanxiaoha.mybatisplusdemo.model.OrderVO"> <result property="userName" column="name"/> <result property="userAge" column="age"/> <result property="userGender" column="gender"/> <result property="orderId" column="order_id"/> <result property="userId" column="user_id"/> <result property="goodsName" column="goods_name"/> <result property="goodsPrice" column="goods_price"/> </resultMap> //... <select id="selectOrderPage" resultMap="orderMap"> select u.name, u.age, u.gender, o.order_id, o.goods_name, o.goods_price from t_user as u left join t_order as o on u.id = o.user_id ${ew.customSqlSegment} </select> //... </mapper> 

再創(chuàng)建一個(gè)單元測試:

@Autowiredprivate UserMapper userMapper;

@Test
void testSelectOrdersPage() { // 查詢第一頁,每頁顯示 10 條 Page<OrderVO> page = new Page<>(1, 10); // 注意:一定要手動(dòng)關(guān)閉 SQL 優(yōu)化,不然查詢總數(shù)的時(shí)候只會(huì)查詢主表 page.setOptimizeCountSql(false); // 組裝查詢條件 where age = 20 QueryWrapper<OrderVO> queryWrapper = new QueryWrapper<>(); queryWrapper.ge("age", 20); IPage<OrderVO> page1 = userMapper.selectOrderPage(page, queryWrapper); System.out.println("總記錄數(shù):" + page1.getTotal()); System.out.println("總共多少頁:" + page1.getPages()); System.out.println("當(dāng)前頁碼:" + page1.getCurrent()); System.out.println("查詢數(shù)據(jù):" + page1.getRecords()); } 

執(zhí)行該單元測試,控制臺(tái)打印實(shí)際執(zhí)行 SQL 如下,可見分頁功能也是 OK 的,先執(zhí)行?select count(*)?查詢記錄總數(shù),然后再執(zhí)行關(guān)聯(lián)分頁查詢:

mybatisplus多表聯(lián)查,mybatis,spring boot,java,數(shù)據(jù)庫,mysql文章來源地址http://www.zghlxwxcb.cn/news/detail-789048.html

到了這里,關(guān)于spring boot集成mybatis-plus——Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)...的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(二)條件查詢QueryWrapper、聚合函數(shù)的使用、Lambda條件查詢

    Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(二)條件查詢QueryWrapper、聚合函數(shù)的使用、Lambda條件查詢

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! 普通查詢 條件構(gòu)造器查詢 【重要】 AbstractWrapper ?是 MyBatis Plus 中的一個(gè)抽象類,用于構(gòu)建 SQL 查詢條件。定義了泛型? T 、 C ?和? Children 。其中, T ?表示實(shí)體類的類型, C ?表示查

    2024年02月04日
    瀏覽(26)
  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus,第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus,第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! MyBatis-Plus是一個(gè)基于MyBatis的增強(qiáng)工具,旨在簡化開發(fā),提高效率。它擴(kuò)展了MyBatis的功能,提供了許多實(shí)用的特性,包括強(qiáng)大的CRUD操作、條件構(gòu)造器、分頁插件、代碼生成器等。MyBa

    2024年02月04日
    瀏覽(24)
  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實(shí)現(xiàn)(PaginationInterceptor )、更新和刪除詳細(xì)方法

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! 自定義mapper文件是為了應(yīng)對(duì)一些更復(fù)雜的查詢場景,首先先配置映射路徑 由于這里的mapper文件放在java文件夾中,所以要在pom.xml里進(jìn)行配置 mapper 測試 在MyBatis Plus中, 物理分頁 和 內(nèi)

    2024年02月03日
    瀏覽(26)
  • Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(一),第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(一),第一個(gè)MP程序(環(huán)境搭建、@TableName、@TableId、@TableField示例)

    學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實(shí)戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備! MyBatis-Plus是一個(gè)基于MyBatis的增強(qiáng)工具,旨在簡化開發(fā),提高效率。它擴(kuò)展了MyBatis的功能,提供了許多實(shí)用的特性,包括強(qiáng)大的CRUD操作、條件構(gòu)造器、分頁插件、代碼生成器等。MyBa

    2024年02月04日
    瀏覽(17)
  • Spring Boot整合MyBatis-Plus

    Spring Boot整合MyBatis-Plus

    引言 在現(xiàn)代軟件開發(fā)中,我們經(jīng)常需要處理大量的數(shù)據(jù)。為了有效地管理這些數(shù)據(jù),我們需要使用一些強(qiáng)大的框架。其中,Spring Boot和MyBatis-Plus是兩個(gè)非常流行的框架。Spring Boot是一個(gè)基于Spring的開源Java框架,可以用于創(chuàng)建獨(dú)立的、生產(chǎn)級(jí)別的Spring應(yīng)用。MyBatis-Plus是一個(gè)MyB

    2024年01月19日
    瀏覽(32)
  • Spring Boot 整合MyBatis-Plus

    Spring Boot 整合MyBatis-Plus

    ??前言 本篇博文是關(guān)于Spring Boot 整合MyBatis-Plus的,希望你能夠喜歡?? ??個(gè)人主頁:晨犀主頁 ??個(gè)人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動(dòng)力???? ??歡迎大家:這里是CSDN,我總結(jié)知識(shí)的地方,歡迎來到我的博客,感謝大家的觀看??

    2024年02月11日
    瀏覽(32)
  • spring boot mybatis-plus操作實(shí)踐

    1、先建一個(gè)數(shù)據(jù)表實(shí)體類 2、service目錄下新建接口IDeptService,然后擴(kuò)展mp的IService 3、service目錄的impl目錄下新建類 DeptServiceImpl,擴(kuò)展mp的ServiceImpl,實(shí)現(xiàn)接口IDeptService,然后注冊(cè)@Service 注解 4、DeptMapper 接口需要擴(kuò)展mp的BaseMapper接口 5、調(diào)試一下看看是否可以使用

    2024年02月01日
    瀏覽(24)
  • spring boot3整合mybatis-plus

    spring boot3整合mybatis-plus

    添加依賴 配置屬性信息 編寫業(yè)務(wù)邏輯測試代碼 配置mybatis-plus分頁插件 配置mybatis-plus之屬性自動(dòng)填充 如圖所示 1、添加依賴 2、配置屬性 3、編寫測試代碼 4、XML文件 5、測試數(shù)據(jù)是否能走通

    2024年03月12日
    瀏覽(24)
  • spring boot+mybatis-plus配置讀寫分離

    對(duì)于mysql主從機(jī)制的讀寫分離,對(duì)于寫操作寫入主庫,讀取操作讀取從庫 一、安裝依賴 二、配置文件配置數(shù)據(jù)源 三、在service,如果是讀取操作的話,則需要加上注解@DS(“slave”)即可,可看如下示例

    2024年01月25日
    瀏覽(22)
  • Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離

    Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離

    ??Spring Boot + MyBatis-Plus實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離 ☆* o(≧▽≦)o *☆嗨~我是IT·陳寒?? ?博客主頁:IT·陳寒的博客 ??該系列文章專欄:架構(gòu)設(shè)計(jì) ??其他專欄:Java學(xué)習(xí)路線 Java面試技巧 Java實(shí)戰(zhàn)項(xiàng)目 AIGC人工智能 數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí) ??文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望

    2024年02月05日
    瀏覽(44)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包