最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用MyBatis XML和QueryWrapper實(shí)現(xiàn)動(dòng)態(tài)查詢

 更新時(shí)間:2026年05月22日 15:30:45   作者:曹天驕  
這篇文章主要介紹了使用MyBatis XML和QueryWrapper實(shí)現(xiàn)動(dòng)態(tài)查詢過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

本文檔介紹了如何在 MyBatis 中結(jié)合 XML 配置和 MyBatis-Plus 的 QueryWrapper 來實(shí)現(xiàn)動(dòng)態(tài)查詢。

1. XML 中定義基本查詢

首先,在 MyBatis XML 文件中定義一個(gè)基本的 select 查詢:

<select id="selectCode" resultType="java.util.Map">
    SELECT * FROM order
</select>

2. 在 Mapper 接口中定義方法

在 Mapper 接口中定義一個(gè)方法,接受 QueryWrapper 作為參數(shù):

package com.example.order.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.order.entity.Order;
import org.apache.ibatis.annotations.Param;
import java.util.Map;

public interface OrderMapper extends BaseMapper<Order> {
    IPage<Map<String, Object>> selectCode(Page<Map<String, Object>> page, @Param("ew") QueryWrapper<Order> queryWrapper);
}

3. 在 Service 層使用 QueryWrapper

在 Service 層中使用 QueryWrapper 來構(gòu)建動(dòng)態(tài)查詢條件,并傳遞給 Mapper 方法:

package com.example.order.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.order.dtc.request.OrderQuery;
import com.example.order.entity.Order;
import com.example.order.mapper.OrderMapper;
import com.example.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Map;

@Service
public class OrderServiceImpl implements OrderService {

    @Autowired
    private OrderMapper orderMapper;

    @Override
    public IPage<Map<String, Object>> selectCode(Page<Map<String, Object>> page, OrderQuery query) {
        QueryWrapper<Order> queryWrapper = new QueryWrapper<>();

        // Add filtering
        if (query.getFilterField() != null && query.getFilterValue() != null) {
            queryWrapper.eq(query.getFilterField(), query.getFilterValue());
        }

        // Add sorting
        if (query.getSortBy() != null) {
            if (query.isAscending()) {
                queryWrapper.orderByAsc(query.getSortBy());
            } else {
                queryWrapper.orderByDesc(query.getSortBy());
            }
        }

        return orderMapper.selectCode(page, queryWrapper);
    }
}

4. XML 中使用動(dòng)態(tài) SQL

在 XML 中,使用 whereif 標(biāo)簽來處理動(dòng)態(tài)條件:

<select id="selectCode" resultType="java.util.Map" parameterType="com.baomidou.mybatisplus.core.conditions.Wrapper">
    SELECT * FROM order
    <where>
        <if test="ew != null">
            ${ew.sqlSegment}
        </if>
    </where>
</select>

說明

  • @Param("ew"): 在 Mapper 方法中使用 @Param("ew") 注解來傳遞 QueryWrapper,ew 是 MyBatis-Plus 約定的參數(shù)名。
  • 動(dòng)態(tài) SQL: 在 XML 中使用 ${ew.sqlSegment} 來插入 QueryWrapper 構(gòu)建的 SQL 片段。
  • 靈活性: 這種方式結(jié)合了 XML 的靈活性和 QueryWrapper 的動(dòng)態(tài)條件構(gòu)建能力。

通過這種方式,您可以在 XML 中定義基本的查詢邏輯,并在 Java 代碼中使用 QueryWrapper 來動(dòng)態(tài)添加查詢條件和排序。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題示例

    Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題示例

    這篇文章主要介紹了Java基于二維數(shù)組實(shí)現(xiàn)的數(shù)獨(dú)問題,涉及java針對數(shù)組的遍歷、計(jì)算、轉(zhuǎn)換等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • SpringBoot配置類注解@Configuration, @Bean用法解讀

    SpringBoot配置類注解@Configuration, @Bean用法解讀

    本文通過對比@Component和@Configuration,解釋了Spring框架的依賴注入(DI)方式,并介紹了@Configuration和@Bean的方法的用法、特點(diǎn)和區(qū)別,舉了驗(yàn)證碼生成器的例子,介紹了@Configuration如何集中管理Bean的創(chuàng)建邏輯,替代了傳統(tǒng)的XML配置
    2026-05-05
  • 解決maven中只有Lifecycle而Dependencies和Plugins消失的問題

    解決maven中只有Lifecycle而Dependencies和Plugins消失的問題

    這篇文章主要介紹了maven中只有Lifecycle而Dependencies和Plugins消失的問題及解決方法,本文通過圖文的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-07-07
  • Java學(xué)習(xí)-打印1-1000以內(nèi)的水仙花數(shù)代碼實(shí)例

    Java學(xué)習(xí)-打印1-1000以內(nèi)的水仙花數(shù)代碼實(shí)例

    這篇文章主要介紹了Java打印1-1000以內(nèi)的水仙花數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 輕松掌握J(rèn)ava策略模式

    輕松掌握J(rèn)ava策略模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava策略模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Spring Boot + Jpa(Hibernate) 架構(gòu)基本配置詳解

    Spring Boot + Jpa(Hibernate) 架構(gòu)基本配置詳解

    本篇文章主要介紹了Spring Boot + Jpa(Hibernate) 架構(gòu)基本配置詳解,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Springboot項(xiàng)目配置阿里云SSL證書的實(shí)現(xiàn)步驟

    Springboot項(xiàng)目配置阿里云SSL證書的實(shí)現(xiàn)步驟

    本文詳細(xì)介紹了SpringBoot項(xiàng)目中配置HTTPS,包括證書申請、下載及安裝過程,及設(shè)置HTTP自動(dòng)重定向至HTTPS,確保網(wǎng)站數(shù)據(jù)傳輸?shù)陌踩?感興趣的可以了解一下
    2025-08-08
  • Java生成由時(shí)間組成的訂單號方式

    Java生成由時(shí)間組成的訂單號方式

    這篇文章主要介紹了Java生成由時(shí)間組成的訂單號方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 如何使用 Shell 腳本查看多個(gè)服務(wù)器的端口是否打開的方法

    如何使用 Shell 腳本查看多個(gè)服務(wù)器的端口是否打開的方法

    這篇文章主要介紹了如何使用 Shell 腳本來查看多個(gè)服務(wù)器的端口是否打開的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 詳解Java中異步轉(zhuǎn)同步的六種方法

    詳解Java中異步轉(zhuǎn)同步的六種方法

    針對應(yīng)用中異步調(diào)用,能不能像同步調(diào)用一樣立刻獲取到命令的執(zhí)行結(jié)果,如何實(shí)現(xiàn)異步轉(zhuǎn)同步?不要擔(dān)心,本文就來為大家詳細(xì)講講Java中異步轉(zhuǎn)同步的六種方法,感興趣的可以了解一下
    2022-06-06

最新評論

阿尔山市| 长寿区| 江油市| 长顺县| 晋宁县| 武威市| 漠河县| 益阳市| 南靖县| 大足县| 新巴尔虎右旗| 特克斯县| 林州市| 波密县| 故城县| 库车县| 陇西县| 泊头市| 宁海县| 汶川县| 德江县| 石泉县| 石河子市| 通山县| 连平县| 青岛市| 盖州市| 揭阳市| 霍邱县| 内丘县| 垫江县| 民县| 六枝特区| 宜良县| 闻喜县| 昔阳县| 白河县| 临沭县| 桃江县| 娱乐| 泸定县|