多数据源时无法调用mybatisplus的CRUD方法(报错信息:Invalid bound statement(not found))+mybatisplus的Banner不打印的解决办法

本文介绍了在多数据源项目中配置MybatisPlus的SqlSessionFactoryBean以支持CRUD操作,并提及了启动Banner的显示规则和关闭方法。
摘要由CSDN通过智能技术生成

背景:

        原本开发其他项目我习惯在java类中添加@Select等sql注解,不喜欢使用xml定义的方法,如果正常简单的增删改成就直接调用mybatisplus的DRUD方法,然后新开发了一个项目是多数据源的项目定义的方法都能正常调用,但是一旦调用mybatisplus的DRUD方法就一直提示Invalid bound statement(not found),除了无法调用drud方法外项目启动mybatisplus的Banner也不打印

解决办法: 

折腾半天才在网上找到多数据源创建SqlSessionFactoryBean实例必须使用MybatisSqlSessionFactoryBean来创建,否则就无法正常调用crud方法

 @Primary // 指定为默认SqlSessionFactory
    @Bean(name = "sqlSessionFactory") //默认数据源不能乱起名字,必须叫sqlSessionFactory
    public SqlSessionFactory sqlSessionFactoryAssy(@Qualifier("dataSourceAssy") DataSource dataSource) throws Exception {
        MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean ();// 创建SqlSessionFactoryBean实例  ---这个就是重点,必须使用MybatisSqlSessionFactoryBean创建SqlSessionFactoryBean实例,否则就无法调用CRUD方法
        factory.setDataSource(dataSource);// 设置数据源
        factory.setTypeAliasesPackage("com.epson.vipwp.domain");
        return factory.getObject();
    }

也就是把SqlSessionFactoryBean factory = new SqlSessionFactoryBean ();

改成MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean ();即可

重点: 未用MybatisSqlSessionFactoryBean之前项目启动时mybatisplus的Banner不打印,如果你多个数据源都需要使用到mybatisplus的crud方法时就需要为每个数据源配置SqlSessionFactory 也就是要创建多个MybatisSqlSessionFactoryBean ,而创建后启动就会打印Banner,但是创建多少个就会打印多少个mybatisplus的Banner,这是因为MyBatisPlus在初始化时,会对SqlSessionFactory进行包装和增强,这个过程会在每个数据源创建SqlSessionFactory时执行一次,因此你就会看到对应数量的数据源就有多少次MyBatisPlus的Banner输出。

这是正常现象,只要你的数据源配置无误,不影响项目的正常运行。如果你想关闭这个Banner,可以在application.properties或application.yml文件中添加以下配置:

mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

这其实是设置MyBatis的日志输出改为只输出到标准输出流(即控制台),并不会直接关闭MyBatisPlus的启动Banner。目前MyBatisPlus并未提供直接关闭启动Banner的配置项,但不影响程序的实际功能,也就是在正式环境运行时只在控制台打印sql,并不会在文件中显示banner

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事不堪回首..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值