MyBatis 自定义IPage 查询

本文介绍了在Java中,如何在Mapper.xml文件中使用SQL查询语句根据条件获取WeixinOrder数据,以及如何结合分页参数进行服务层的调用实现。
Mapper.xml 部分
    <select id="findCustomerDistributionOrder"
            resultType="com.ruoyi.web_api.weixinOrder.entity.WeixinOrder">
        SELECT
        ai_weixin_order.*
        FROM ai_weixin_order
        LEFT JOIN ai_distributor_customers on ai_weixin_order.create_user_id = ai_distributor_customers.user_id
        WHERE
        ai_distributor_customers.distributor_user_id = #{wxOrder.userId}
        <if test="wxOrder.ctype != null and wxOrder.ctype != ''">
            AND ai_weixin_order.ctype = #{wxOrder.ctype}
        </if>
        <if test="wxOrder.platform != null and wxOrder.platform != ''">
            AND ai_distributor_customers.platform = #{wxOrder.platform}
        </if>
        <if test="wxOrder.status != null and wxOrder.status != ''">
            AND ai_weixin_order.status = #{wxOrder.status}
        </if>
        <if test="wxOrder.isdeal != null and wxOrder.isdeal != ''">
            AND ai_weixin_order.isdeal = #{wxOrder.isdeal}
        </if>
    </select>

Mpper.java,

使用分页需要添加第一个参数:

@Param("page") Page<FindWeiXinOrder> page

第二个参数是查询条件:

@Param("wxOrder") FindWeiXinOrder wxOrder
public interface WeixinOrderMapper extends BaseMapper<WeixinOrder> {


    public IPage<WeixinOrder> findCustomerDistributionOrder(@Param("page") Page<FindWeiXinOrder> page, @Param("wxOrder") FindWeiXinOrder wxOrder);

}

ServiceImpl.java

@Service
public class WeixinOrderServiceImpl extends ServiceImpl<WeixinOrderMapper, WeixinOrder> implements IWeixinOrderService {

    public IPage<WeixinOrder> findCustomerDistributionOrder(FindWeiXinOrder weixinOrder){
        Page<FindWeiXinOrder> page = new Page<>(weixinOrder.getPageNum(), weixinOrder.getPageSize());
        return getBaseMapper().findCustomerDistributionOrder(page,weixinOrder);
    };

}

MyBatis中,iPage是基于分页插件iPageQuery的增强,它提供了一种更方便的方式来处理分页查询。如果你想在MyBatis中使用自定义SQL来进行分页,你可以按照以下步骤操作: 1. **配置Mapper XML文件**: - 首先,在你的Mapper XML文件中,通常你会有一个包含`selectList`或`selectOne`的查询,然后添加一个`<if>`标签来判断是否需要执行自定义的分页SQL。例如: ```xml <select id="selectUsers" parameterType="map" resultType="YourEntity"> <if test="isCustomSql == true"> <!-- 自定义的分页SQL --> SELECT * FROM your_table WHERE some_condition LIMIT #{offset}, #{limit} </if> <else> <!-- 使用iPageQuery的默认SQL --> <include refid="baseSelectUsers"/> </else> </select> ``` 其中`#{offset}`和`#{limit}`是预留给iPageQuery的占位符。 2. **传递额外参数**: - 在你的Service或Repository层调用这个Mapper方法时,除了传递常规的查询条件外,还需要传递额外的参数如`offset`、`limit`以及可能用于动态构建SQL的其他信息。 3. **使用iPageQuery的工具类**: - 调用`com.github.pagehelper.PageHelper.startPage()`方法来开始一个新的分页请求,并传入当前页数和每页大小等参数。然后执行你的自定义SQL。如果没使用`<if>`中的条件,那么会自动使用iPageQuery的标准实现。 ```java PageResult<YourEntity> page = sqlSession.selectPage( "yourMapper.selectUsers", // mapper方法名 params, // 查询参数 new PageHelper(pageNum, pageSize) // 分页设置 ); ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值