最新国产好看的视频,伊人天堂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)查詢過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

本文檔介紹了如何在 MyBatis 中結(jié)合 XML 配置和 MyBatis-Plus 的 QueryWrapper 來(lái)實(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 來(lái)構(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)簽來(lái)處理動(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>

說(shuō)明

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

    本文通過(guò)對(duì)比@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消失的問(wèn)題

    解決maven中只有Lifecycle而Dependencies和Plugins消失的問(wèn)題

    這篇文章主要介紹了maven中只有Lifecycle而Dependencies和Plugins消失的問(wèn)題及解決方法,本文通過(guò)圖文的形式給大家介紹的非常詳細(xì),對(duì)大家的學(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ù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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,包括證書申請(qǐng)、下載及安裝過(guò)程,及設(shè)置HTTP自動(dòng)重定向至HTTPS,確保網(wǎng)站數(shù)據(jù)傳輸?shù)陌踩?感興趣的可以了解一下
    2025-08-08
  • Java生成由時(shí)間組成的訂單號(hào)方式

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

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

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

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

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

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

最新評(píng)論

溧阳市| 乌兰县| 江口县| 富民县| 仙桃市| 奎屯市| 莒南县| 万州区| 台南县| 宜春市| 麻江县| 乌苏市| 沈丘县| 茶陵县| 琼海市| 白玉县| 琼结县| 东城区| 南涧| 靖江市| 临湘市| 凭祥市| 武宁县| 定边县| 蒲江县| 衡东县| 泽普县| 澳门| 柞水县| 濮阳市| 黄浦区| 兰西县| 北宁市| 凯里市| 育儿| 上高县| 冷水江市| 南宫市| 德江县| 黄大仙区| 新郑市|