使用MyBatis-Plus的XML自定义分页,包含mybatis_xml传参问题、找不到xml问题

首先保证正常的分页可以使用,没有缺少配置

然后打开官网查看官方文档MyBatis-Plus——XML自定义分页

由于之前一直用MyBatis-Plus没怎么写过xml,所以在记录一下开发步骤。
1、调整xml位置
在这里插入图片描述
2、添加路径配置application.yml

mybatis-plus:
  global-config:
  type-aliases-package: com.storage.**.entity
  mapper-locations: classpath*:mybatis/mapper/**/*.xml

3、在XXMapper.xmlXXMapperXXController中写入测试代码,验证是否能跑通

/**
 * <p>
 *  Mapper.xml
 * </p>
 * @author cst
 * @since 2021-08-03
 */
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.XX.core.person.mapper.XXMapper">
    <select id="testAt" resultType="com.XX.core.person.entity.XX">
        select * from person;
    </select>
</mapper>

/**
 * <p>
 *  Mapper 接口
 * </p>
 * @author cst
 * @since 2021-08-03
 */
@Component
public interface XXMapper extends BaseMapper<XX> {
    List<XX> testAt();
}

/**
 * <p>
 *  Controller
 * </p>
 * @author cst
 * @since 2021-08-03
 */
    @GetMapping
    public Object getAll(){
        return XXMapper.testAt();
    }

4、成功返回数据
在这里插入图片描述


遇到的问题

1、找不到.xml文件

错误信息org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

在这里插入图片描述
在这里插入图片描述
在新建包的时候 . 是会变成父子集但是文件夹不行

2、找不到参数

问题①

错误信息org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'list' not found. Available parameters are [ids, page, param1, param2]

方案一、在XXmapper中使用@Param("list")指定一下就行

报错时

    IPage<InoculationPersonVO> selectAll(Page<?> page, List<Integer> ids);

修复后

    IPage<InoculationPersonVO> selectAll(Page<?> page, @Param("list") List<Integer> ids);
方案二、按下图中的对应可以请求成功

在这里插入图片描述

在这里插入图片描述

问题②

使用pojo传参时会遇到参数不匹配的问题

(1)当mapper层有两个参数时

在这里插入图片描述
xml修改前(有参数无法匹配的错误)

<if test="hospital!=null and hospital!=''">
            t2.`name` LIKE concat('%',#{hospital},'%') AND
        </if>

修改后(没有错误)

<if test="userPageVO.hospital!=null and userPageVO.hospital!=''">
            t2.`name` LIKE concat('%',#{userPageVO.hospital},'%') AND
        </if>
(2)当mapper层只有一个参数的时候

在这里插入图片描述
xml修改前(有参数无法匹配的错误)

<if test="rolePageVO.name!=null and rolePageVO.name!=''">
           name like concat('%',#{rolePageVO.name},'%') and
        </if>

修改后(没有错误)

<if test="name!=null and name!=''">
           name like concat('%',#{name},'%') and
</if>
(3)总结:

个人理解是当有两个参数时,xml和mapper匹配时会把这两个参数看成一个新的pojo,所以直接使用原来pojo中的属性会找不到,需要pojiName.属性才能取到值。
当只有一个参数时,这个直接使用该pojo的属性即可
(主要是目前还不太会看源码。。。。)

(4)补充

这样是可以的
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值