spring boot 配置多数据源 踩坑 BindingException: Invalid bound statement (not found)

news2024/11/26 14:31:46

在上一篇:《【已解决】Spring Boot多数据源的时候,mybatis报错提示:Invalid bound statement (not found)》 凯哥(凯哥Java) 已经接受了,在Spring Boot配置多数据源时候,因为自己马虎,导致的一个坑。下面,凯哥在介绍配置多数据源时候的坑:

模仿另一个项目的配置,但第二个数据源一直报异常:

查资料后,始终认为是配置的mapper.xml和dao的问题。但无论怎么改,都不行。

最后发现之前那个项目,第二个数据源对应的dao,都没有加@Mapper注解,遂去掉后即正常了。(可能和我将第一个数据源配置成Primary有关系?)

暂不清楚具体原因,仅此记录。

------------- 后记 ------------- 

经测试,果然是因为@Primary注解引起的。引起问题注解的代码如下:

@Configuration

@MapperScan(basePackages = "com.kaigejava.trade.admin.dao", sqlSessionFactoryRef = "defaultSqlSessionFactory")

public class TradeSystemConfig {

    /**

     * Bean 将这个对象放入Spring容器中

     * Primary 表示这个数据源是默认数据源

     * ConfigurationProperties 读取application.properties中的配置参数映射成为一个对象

     * prefix 表示参数的前缀

     *

     * @return {@link DataSource}

     */

    @Bean(name = "defaultDataSource")

    @Primary

    @ConfigurationProperties(prefix = "spring.datasource.tts")

    public DataSource getDateSourceTts() {

        return DataSourceBuilder.create().build();

    }

    /**

     * 表示这个数据源是默认数据源

     * Qualifier 表示查找Spring容器中名字为defaultDataSource的对象

     *

     * @param datasource {@link DataSource}

     * @return @{link SqlSessionFactory}

     * @throws Exception ex

     */

    @Bean(name = "defaultSqlSessionFactory")

    @Primary

    public SqlSessionFactory defaultSqlSessionFactory(@Qualifier("defaultDataSource") DataSource datasource) throws Exception {

        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();

        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration();

        configuration.setMapUnderscoreToCamelCase(true);

        bean.setConfiguration(configuration);

        bean.setDataSource(datasource);

        // 设置mybatis的xml所在位置

        bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));

        return bean.getObject();

    }

    /**

     * 表示这个数据源是默认数据源

     *

     * @param sessionFactory {@link SqlSessionFactory}

     * @return {@link SqlSessionTemplate}

     */

    @Bean("defaultSqlSessionTemplate")

    @Primary

    public SqlSessionTemplate defaultSqlSessionTemplate(

            @Qualifier("defaultSqlSessionFactory") SqlSessionFactory sessionFactory) {

        return new SqlSessionTemplate(sessionFactory);

    }

}

可以去掉这个注解,然后Dao便可以正常写上@Mapper注解了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【操作系统】实验一 熟悉LINUX环境和命令

实验名称: 实验一 熟悉LINUX环境和命令 实验目的: 1. 了解UNIX/LINUX的命令及使用格式。 2.熟悉UNIX/LINUX的常用基本命令。 3. 练习并掌握LINUX提供的vi编辑器来编译C程序 4. 学会利用gcc、gdb编译、调试C程序 实验内容: 熟悉UNIX/LINUX的…

YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv(空间深度转换卷积)技术。SPD-Conv是一种创新的空间编码技术,它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念:它是一种将图像空间信息转换为深度信息…

Java_Lambda表达式JDK8新特性(方法引用)

一、Lambda表达式 接下来,我们学习一个JDK8新增的一种语法形式,叫做Lambda表达式。作用:用于简化匿名内部类代码的书写。 1.1 Lambda表达式基本使用 怎么去简化呢?Lamdba是有特有的格式的,按照下面的格式来编写Lamd…

如何用Python向图像中加入噪声

我们在做机器视觉项目的过程中,有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能,如果自己写的话,不但麻烦,而且容易出错。好在skimage支持这个功能。代码如下: import skimage import matplotlib.pyplot …

Web安全漏洞分析—文件包含

在当今数字化时代,随着Web应用程序的广泛应用,网络安全问题愈加凸显。其中,文件包含漏洞作为一种常见但危险的安全隐患,为恶意攻击者提供了可乘之机。在这篇博客中,我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…

信息收集 - 域名

1、Whois查询: Whois 是一个用来查询域名是否已经被注册以及相关详细信息的数据库(如:域名所有人、域名注册商、域名注册日期和过期日期等)。通过访问 Whois 服务器,你可以查询域名的归属者联系方式和注册时间。 你可以在 域名Whois查询 - 站长之家 上进行在线查询。 2、…

python提取图片型pdf中的文字(提取pdf扫描件文字)

前言 文字型pdf提取,python的库一大堆,但是图片型pdf和pdf扫描件提取,还是有些难度的,我们需要用到OCR(光学字符识别)功能。 一、准备 1、安装OCR(光学字符识别)支持库 首先要安…

详解git pull和git fetch的区别

git pull和git fetch的区别, 网上人云亦云胡说八道的实在是太多了,误导我很久。 今天看到一个说得好的,记录一下。 前言 在我们使用git的时候用的更新代码是git fetch,git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢&#xff…

vue3引入Echarts图表

说明:echarts是父组件,stack是子组件,将stack引入到echarts文件中 查看echarts.vue时可看到stack.vue中的图表 # # # 引入方式 第一步 Echarts官网:快速上手 - 使用手册 - Apache ECharts 第二步 在控制台安装Echarts模块…

8.完成任务实现的SDK封装及插件式加载

1.设计 任务的实现目前完成了Modbus RTU、Modbus TCP、Virtule。任务实现应该是任意的,比如打印一段话,执行一句SQL等,所以系统内部的必然要做到可扩展。 要做到可扩展,首先第一步就是定义标准,所以我们首先需要封装…

nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐

银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理,完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障,目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…

从文字下乡到人人学英语

从建国到改革开放,从恢复高考到新式教育改革,中国飞速发展,文字需求也在不断增大,在“地球村”的时代下,我们要“习文字之变,顺时代发展。” 古言道:“仓颉作书,后稷作稼”&#xff…

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式,每种模式特点?(☆☆☆☆☆) 2、Spark为什么比MapReduce块?(☆☆☆☆☆) 3、简单说一下hadoop和spark的shuffle相同和差异?(☆☆☆☆☆…

Linux学习教程(第十三章 Linux数据备份与恢复)

第十三章 Linux数据备份与恢复 不知道大家有没有丢失过重要的数据呢? 丢失数据的理由是多种多样的,有人是因为重装系统时,没有把加密文件的密钥导出,重装系统后密钥丢失,导致所有的加密数据不能解密;也有人…

实验记录:深度学习模型收敛速度慢有哪些原因

深度学习模型收敛速度慢有哪些原因? 学习率设置不当: 学习率是算法中一个重要的超参数,它控制模型参数在每次迭代中的更新幅度。如果学习率过大,可能会导致模型在训练过程中的振荡,进而影响到收敛速度;如果…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器,在 Linux 驱动开发中,肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中, 我们需要按照其规定的框架来编写驱动,所以说学 …

【网络安全】网络防护之旅 - Java安全机制探秘与数字证书引爆网络防线

🌈个人主页:Sarapines Programmer🔥 系列专栏:《网络安全之道 | 数字征程》⏰墨香寄清辞:千里传信如电光,密码奥妙似仙方。 挑战黑暗剑拔弩张,网络战场誓守长。 目录 😈1. 初识网络安…

机场信息集成系统系列介绍(3):机场运行核心数据库(AODB)

目录 1、背景:什么是AODB 2、AODB包括哪些内容 3、AODB还应该适配哪些场景 4、一点点拓展 机场运行核心数据库(AODB)Airport Operation DataBase 1、背景:什么是AODB 在机场繁重的航班保障和旅客服务背后,庞大的…

centos安装了curl却报 -bash: curl: command not found

前因 我服务器上想用curl下载docker-compress,发现没有curl命令,就去下载安装,安装完成之后,报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …

非常好用的C++跨平台网络通信Mongoose,随笔记录

简介 Mongoose 是一个 C/C 网络库。它实现了事件驱动, TCP、UDP、HTTP、WebSocket、MQTT 的非阻塞 API。它连接设备 并将它们带到网上。自 2004 年以来,一些开源和商业 产品已经利用了它。它甚至运行在 国际空间站! Mongoose 使嵌入式网络编…