在springboot整合mybatis/mybatis-plus后,运行项目后;测试多表关联分页查询【单表分页查询没问题】报下面的错误:
异常描述: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
原因: springboot整合mybatis/mybatis-plus, 在编译时, 如果不添加此节点mybatis的mapper.xml文件都会被漏掉, 即只会生成mapper对应的class文件, 而不会生成xml文件.
解决办法: pom文件添加:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
项目主要代码:
1、接口
/**
* 一对一关联查询+分页+参数 列表
* @param req 查询参数
* @return
*/
IPage<SellerInfo> querySellerInfoAndCardPageList(SellerInfoAndSellerCardPageREQ req);
2、接口实现类
/**
* 一对一关联查询+分页+参数 列表
* @param req 查询参数
* @return
*/
@Override
public IPage<SellerInfo> querySellerInfoAndCardPageList(SellerInfoAndSellerCardPageREQ req) {
IPage<SellerInfo> page = baseMapper.querySellerInfoAndCardPageList(req.getPage(), req);
System.out.println("=="+page.getTotal());
return page;
}
3、对应的mapper和xml
/**
*
* 一对一关联 分页+参数查询 列表
* 1、第一个参数传递分页的对象page (此对象封装当前页码,还有显示查询多少)
* 2、第二个参数,查询条件,@Param取别名,
* @Param("req")这个取的别名,方便xml里面使用
*/
IPage<SellerInfo> querySellerInfoAndCardPageList(IPage<SellerInfo> page, @Param("req") SellerInfoAndSellerCardPageREQ req);
<?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.business.app.mapper.SellerInfoMapper">
<!--一对一关联 分页+参数查询 列表 AND m1.id = #{req.labelId} -->
<select id="querySellerInfoAndCardPageList" resultType="SellerInfo">
SELECT
si.seller_id,
si.username,
si.create_time,
si.update_time,
sc.name,
sc.id_card
FROM
`ztest_seller_info` AS si
LEFT JOIN `ztest_seller_card` AS sc ON si.seller_id = sc.seller_id
WHERE
si.`status` = 1
<if test="req.username != null and req.username != '' ">
AND si.username LIKE CONCAT('%',#{req.username},'%')
</if>
<if test="req.name != null and req.name !='' ">
OR sc.`name` LIKE CONCAT('%', #{req.name},'%')
</if>
</select>
</mapper>