mybatisplus多条件对象xml分页查询

不要用它自带的

selectPage方法,会有传参问题

controller


import java.util.Set;


@RestController
@RequiredArgsConstructor
@RequestMapping("/deviceInfo" )
public class DeviceInfoController {

    private final  DeviceInfoService deviceInfoService;


	/**
	 * 分页查询
	 * @param page 分页对象
	 * @param queryDto 设备信息查询对象
	 * @return
	 */
	@GetMapping("/page" )
	@PreAuthorize("@pms.hasPermission('proxy_deviceInfo_view')" )
	public R selectPage(Page page, @Validated(value = SelectVerify.class) DeviceInfoDTO queryDto) {
		return R.ok(deviceInfoService.selectForPage(page, queryDto));
	}
 
}

Mapper

public interface DeviceInfoMapper extends BaseMapper<DeviceInfo> {

    IPage<DeviceInfoVO> selectForPage(Page page, @Param("queryDto") DeviceInfoDTO queryDto);

    List<DeviceInfoVO> selectList(DeviceInfoDTO queryDto);
}

xml


<resultMap id="deviceInfoVoMap" type="xx.xx.vo.DeviceInfoVO">
        <id property="id" column="id"/>
        <id property="groupId" column="group_id"/>
        <id property="deviceNumber" column="device_number"/>
        <id property="deviceCategory" column="device_category"/>
        <id property="deviceType" column="device_type"/>
        <id property="manufacturer" column="manufacturer"/>
        <id property="deviceModel" column="device_model"/>
        <id property="remark" column="remark"/>
        <id property="createBy" column="create_by"/>
        <id property="createTime" column="create_time"/>
        <id property="updateBy" column="update_by"/>
        <id property="updateTime" column="update_time"/>
    </resultMap>




<select id="selectForPage" resultMap="deviceInfoVoMap">
		  SELECT
		  	di.*
		  FROM device_info di

		  <where>
			  <if test="queryDto.groupId != null">
				  AND di.group_id = #{queryDto.groupId}
			  </if>
			  <if test="queryDto.deviceNumber != null and queryDto.deviceNumber != ''">
				  AND di.device_number = #{queryDto.deviceNumber}
			  </if>
			  <if test="queryDto.deviceTypeCollection != null and queryDto.deviceTypeCollection.size > 0">
				  AND di.device_type IN
				  <foreach collection="queryDto.deviceTypeCollection" index="idx" item="item" separator="," open="(" close=")">
					  #{item}
				  </foreach>
			  </if>
		  </where>
		  ORDER BY di.device_number ASC
	  </select>

Server




public interface DeviceInfoService extends IService<DeviceInfo> {

  

    /**
     * 分页查询
     */
    IPage<DeviceInfoVO> selectForPage(Page page, DeviceInfoDTO queryDto);

   
}

impl


@Service
@RequiredArgsConstructor
public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceInfo> implements DeviceInfoService {

     

    public IPage<DeviceInfoVO> selectForPage(Page page, DeviceInfoDTO queryDto) {
        return baseMapper.selectForPage(page, queryDto);
    }

    
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-PlusMyBatis的增强工具,它提供了许多便捷的方法来简化数据操作。在MyBatis-Plus中,可以使用Wrapper来进行多表查询,并结合分页功能来实现分页查询。 以下是一个示例,演示如何在MyBatis-Plus中进行多表查询和分页操作: ```java// 导入相关类import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; // 创建Page对象,指定当前页和每页记录数Page<User> page = new Page<>(currentPage, pageSize); // 创建QueryWrapper对象,用于构建查询条件QueryWrapper<User> queryWrapper = new QueryWrapper<>(); // 添加查询条件queryWrapper.eq("user.type", "admin"); // 示例:根据user表中的type字段查询值为admin的记录// 执行多表查询和分页操作Page<User> resultPage = userMapper.selectUserAndRolePage(page, queryWrapper); // 获取查询结果List<User> userList = resultPage.getRecords(); // 获取当前页的数据列表long total = resultPage.getTotal(); // 获取总记录数// 输出结果System.out.println("总记录数:" + total); System.out.println("当前页数据:"); for (User user : userList) { System.out.println(user); } ``` 在上述示例中,我们使用了MyBatis-Plus提供的Page对象来指定当前页和每页记录数。然后,我们创建了一个QueryWrapper对象,用于构建查询条件。接着,我们调用userMapper的selectUserAndRolePage方法进行多表查询和分页操作,将查询结果封装到Page对象中。最后,我们可以通过Page对象获取查询结果。 需要注意的是,具体的多表查询逻辑和分页逻辑需要根据你的数据模型和需求来进行调整和完善。上述示例仅供参考,你需要根据实际情况进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值