牡丹江网站建设公司,现在建网站多少钱,文山做网站,淄博桓台网站建设报价本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。
1. XML 中定义基本查询
首先#xff0c;在 MyBatis XML 文件中定义一个基本的 select 查询#xff1a;
select idselectCode resultTypejava.util.Ma…本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。
1. XML 中定义基本查询
首先在 MyBatis XML 文件中定义一个基本的 select 查询
select idselectCode resultTypejava.util.MapSELECT * FROM order
/select2. 在 Mapper 接口中定义方法
在 Mapper 接口中定义一个方法接受 QueryWrapper 作为参数
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 BaseMapperOrder {IPageMapString, Object selectCode(PageMapString, Object page, Param(ew) QueryWrapperOrder queryWrapper);
}3. 在 Service 层使用 QueryWrapper
在 Service 层中使用 QueryWrapper 来构建动态查询条件并传递给 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 {Autowiredprivate OrderMapper orderMapper;Overridepublic IPageMapString, Object selectCode(PageMapString, Object page, OrderQuery query) {QueryWrapperOrder queryWrapper new QueryWrapper();// Add filteringif (query.getFilterField() ! null query.getFilterValue() ! null) {queryWrapper.eq(query.getFilterField(), query.getFilterValue());}// Add sortingif (query.getSortBy() ! null) {if (query.isAscending()) {queryWrapper.orderByAsc(query.getSortBy());} else {queryWrapper.orderByDesc(query.getSortBy());}}return orderMapper.selectCode(page, queryWrapper);}
}4. XML 中使用动态 SQL
在 XML 中使用 where 和 if 标签来处理动态条件
select idselectCode resultTypejava.util.Map parameterTypecom.baomidou.mybatisplus.core.conditions.WrapperSELECT * FROM orderwhereif testew ! null${ew.sqlSegment}/if/where
/select说明
Param(ew): 在 Mapper 方法中使用 Param(ew) 注解来传递 QueryWrapperew 是 MyBatis-Plus 约定的参数名。动态 SQL: 在 XML 中使用 ${ew.sqlSegment} 来插入 QueryWrapper 构建的 SQL 片段。灵活性: 这种方式结合了 XML 的灵活性和 QueryWrapper 的动态条件构建能力。
通过这种方式您可以在 XML 中定义基本的查询逻辑并在 Java 代码中使用 QueryWrapper 来动态添加查询条件和排序。