MyBatis-Plus(四):解决 Mybatis-Plus 中 “Invalid bound statement (not found)” 错误新情况

解决 Mybatis-Plus 中 “Invalid bound statement (not found)” 错误新情况

大家好,我是欧阳方超,微信公众号同名。
在这里插入图片描述

1 概述

在之前探讨 Invalid bound statement (not found) 错误的文章里,常见原因是 SQL 的 xml 文件未正确打入 jar 包。但此次遇到新状况,项目中未编写 xml 文件,仅在服务类中有简单的 this.list() 查询语句,调用接口时却依旧出现 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 错误。

2 错误根源剖析

使用 Mybatis-Plus 时,若自行创建 sqlSessionFactory 这个 bean,不能使用常规的 SqlSessionFactory。Mybatis-Plus 有其特定的 MybatisSqlSessionFactory,它能够代理常用的增删查改方法。在实际开发中,许多开发者习惯按照传统 Mybatis 配置方式创建 sqlSessionFactory,在 Mybatis-Plus 环境下就易引发此错误。
例如,传统 Mybatis 配置创建 sqlSessionFactory 可能如下:

@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource);
    // 其他配置...
    return factoryBean.getObject();
}

而在 Mybatis-Plus 项目里,正确的创建方式应使用 MybatisSqlSessionFactory,示例如下:

@Bean
public MybatisSqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
    MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
    factoryBean.setDataSource(dataSource);
    // 其他配置...
    return factoryBean.getObject();
}

3 总结与启示

在使用 Mybatis-Plus 开发过程中,必须留意这些容易被忽视的配置差异。不能单纯照搬以往 Mybatis 开发经验,而应深入领会 Mybatis-Plus 的独特之处与要求。
我是欧阳方超,把事情做好了自然就有兴趣了,如果你喜欢我的文章,欢迎点赞、转发、评论加关注。我们下次见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值