mybatis项目采用mybatis-plus开发,报:Invalid bound statement (not found) 异常,详细解决方案
1、问题说明
原有项目用shiro控制权限,要合并到新项目中,新项目中用到mybatis-plus (官网地址:https://mp.baomidou.com/),合并后项目启动不起来。
报:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。
官网常见问题中有描述问题解决方案:
描述的比较抽象,弄了半天才解决,记录下,希望对朋友有帮助。
2、解决方案
2.1 包的问题
如下pom文件配置,删除mybatis-spring包和mybatis-plus包,使用:mybatis-plus-boot-starter包。
<!-- ***************** 手动引入 **************** -->
<!-- mybatis-spring -->
<!-- <dependency>-->
<!-- <groupId>org.mybatis</groupId>-->
<!-- <artifactId>mybatis-spring</artifactId>-->
<!-- <version>${mybatis-spring.version}</version>-->
<!-- </dependency>-->
<!-- pagehelper-spring-boot-starter -->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus</artifactId>-->
<!-- <version>3.4.2</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
2.2 使用MybatisSqlSessionFactoryBean
就官网解决方案中的使用:MybatisSqlSessionFactoryBean
import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class MybatisPlusConfig {
@Autowired
private DataSource dataSource;
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean mybatisPlus = new MybatisSqlSessionFactoryBean();
mybatisPlus.setDataSource(dataSource);
return mybatisPlus;
}
}
2.3 其他配置问题
软件老王这边,其他的配置本身就是对的,比如:
(1)启动类上配置MapperScan
@MapperScan({"com.laowang.db.mapper"})
(2)配置文件(property)配置及加载mapper
mybatis-plus.mapper-locations:classpath*:/mapper/*.xml
更多信息请关注公众号:「软件老王」,关注不迷路,软件老王和他的IT朋友们,分享一些他们的技术见解和生活故事。
更多信息请关注公众号:「软件老王」,关注不迷路,IT技术与相关干货分享,回复关键字获取对应干货,本文版权归作者软件老王所有,转载需注明作者、超链接,否则保留追究法律责任的权利。