然后打开官网查看官方文档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.xml
、XXMapper
和XXController
中写入测试代码,验证是否能跑通
/**
*
* Mapper.xml
*
* @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>
/**
*
* Mapper 接口
*
* @author cst
* @since 2021-08-03
*/
@Component
public interface XXMapper extends BaseMapper<XX> {
List<XX> testAt();
}
/**
*
* Controller
*
* @author cst
* @since 2021-08-03
*/
@GetMapping
public Object getAll(){
return XXMapper.testAt();
}
.xml
文件错误信息org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
错误信息org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'list' not found. Available parameters are [ids, page, param1, param2]
@Param("list")
指定一下就行报错时
IPage<InoculationPersonVO> selectAll(Page<?> page, List<Integer> ids);
修复后
IPage<InoculationPersonVO> selectAll(Page<?> page, @Param("list") List<Integer> ids);
使用pojo传参时会遇到参数不匹配的问题
<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>
<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>
个人理解是当有两个参数时,xml和mapper匹配时会把这两个参数看成一个新的pojo,所以直接使用原来pojo中的属性会找不到,需要pojiName.属性
才能取到值。
当只有一个参数时,这个直接使用该pojo的属性即可
(主要是目前还不太会看源码。。。。)