mybatis自定义传参排序

本文介绍了在MyBatis中进行自定义参数排序的注意事项,强调了`<select>`标签的`id`应与Mapper方法名一致且参数类型匹配。同时提到,parameterType可以是具体类型或Map,但Map中的key需与占位符#{}保持一致,以确保正确传参。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis自定义传参排序

注意事项:

1. <select id=“名字” 名字必须跟对应的mapper的方法名一致".参数类型也要一致!>

以下是对应的mapper方法名
在这里插入图片描述

<!--工单列表展示-->
    <select id="getVirtualTaskDetailAndInfo" parameterType="map" resultType="map">
      SELECT
      t.id,
      t.task_num,
      t.apply_num,
      t.province,
      t.city,
      t.`status`,
      t.create_time,
      t.enable_time,
      t.end_time,
      t.task_type,
      p.attribution_number,
      d.real_name
      FROM
      gkshop_virtual_task t
      LEFT JOIN gkshop_virtual_phone p  ON t.id = p.task_id
      LEFT JOIN gkshop_phone_library l ON l.phone_number = p.attribution_number
      LEFT JOIN gkshop_users_directories d ON d.`id` = l.`directories_id`
    WHERE 1=1
        <if test="taskStatus != null">
        and t.`status` = #{taskStatus}
        </if>
        <if test="taskType != null">
            AND t.task_type =#{taskType}
        </if>
        <if test="taskNum != null">
            AND t.task_num = #{taskNum}
        </if>
        <if test="city != null">
            AND t.city=#{city}
        </if>
        <if test="realName != null">
            AND d.real_name = #{realName}
        </if>
        <if test="attributionNumber != null">
            AND p.attribution_number = #{attributionNumber}
        </if>
        <if test="startTime != null and endTime != null ">
            AND t.create_time BETWEEN #{startTime} and #{endTime}
        </if>
        <if test="orderBy != null ">
            ORDER BY  ${orderBy}
        </if>
  </select>

2. parameterType=“是什么类型的参数就给什么类型,对象就给对象”.封装成map也可以,但是map的key需要跟#{大括号里面一致}

比如你传了多个参数,这些参数你可以这样:

Map<String, Object> map = new HashMap<>();
		
		if (!StringUtil.isEmpty(taskStatus)) {
		    map.put("taskStatus", taskStatus);
		}
		if (!StringUtil.isEmpty(city) && !("城市".equals(city))) {
		    map.put("city", city);
		}
		if (!StringUtil.isEmpty(city) && !("省份".equals(province))) {
		    map.put("province", province);
		}
		if (!StringUtil.isEmpty(realName)) {
		    map.put("realName", realName);
		}
		if (!StringUtil.isEmpty(attributionNumber)) {
		    map.put("attributionNumber", attributionNumber);
		}
		if (!StringUtil.isEmpty(taskNum)) {
		    map.put("taskNum", taskNum);
		}
		if (!StringUtil.isEmpty(taskType)) {
		    map.put("taskType", taskType);
		}
		if (!StringUtil.isEmpty(startTime) && !StringUtil.isEmpty(endTime)) {
		    map.put("startTime", startTime);
		    map.put("endTime", endTime);
		}
		//根据页面选择排序条件进行排序处理
		if (StringUtil.isEmpty(orderBy)) {
		    orderBy = "t.create_time DESC";
		    map.put("orderBy", orderBy);
		} else {
		    map.put("orderBy", orderBy);
		}
List<Map<String, Object>> detailAndInfo = taskDOMapper.getVirtualTaskDetailAndInfo(map);

在这里插入图片描述
这样与之对应即可!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值