mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置。

1. 配置application.yml

# mybatis配置
mybatis:check-config-location: falsetype-aliases-package: ${base.package}.modelconfiguration:map-underscore-to-camel-case: true# 二级缓存的总开关cache-enabled: falsemapper-locations: classpath:mapping/*.xml

2. 新增数据源配置类

/*** 数据源配置* @author simon* @date 2019-02-18*/
@Configuration
public class DataSourceConfig {@Value("${mybatis.mapper-locations}")private String mapperLocations;@Primary@Bean@ConfigurationProperties("spring.datasource.druid")public DataSource dataSource(){return DruidDataSourceBuilder.create().build();}@Beanpublic JdbcTemplate jdbcTemplate(){return new JdbcTemplate(dataSource());}@Beanpublic DatabaseIdProvider databaseIdProvider(){DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();Properties p = new Properties();p.setProperty("Oracle", "oracle");p.setProperty("MySQL", "mysql");p.setProperty("PostgreSQL", "postgresql");p.setProperty("DB2", "db2");p.setProperty("SQL Server", "sqlserver");databaseIdProvider.setProperties(p);return databaseIdProvider;}@Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(dataSource());factoryBean.setDatabaseIdProvider(databaseIdProvider());factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));return factoryBean;}
}

3. 在mapper.xml中使用

方法1

  <select id="findAuthorityByUrl" resultType="java.lang.String" databaseId="mysql">SELECTgroup_concat( tsma.authority ) as authorityFROMt_side_menu tsmLEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id</select><select id="findAuthorityByUrl" resultType="java.lang.String" databaseId="postgresql">SELECTstring_agg( tsma.authority, ',') as authorityFROMt_side_menu tsmLEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id</select>

方法2

  <select id="selectByPids" parameterType="String" resultMap="SuperResultMap">SELECTtsm.*,<if test="_databaseId == 'mysql'">group_concat( tsma.authority ) as authority</if><if test="_databaseId == 'postgresql'">string_agg( tsma.authority, ',') as authority</if>FROMt_side_menu tsmLEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_idWHERE pid IN (#{pids})GROUP BYtsm.id</select>

题外话

如果有兴趣,请给oauthserer项目一个star。oauthserver是一个基于Spring Boot Oauth2的完整的独立的Oauth2 Server微服务。项目的目的是,仅仅需要创建相关数据表,修改数据库的连接信息,你就可以得到一个Oauth2 Server微服务。

Spring Boot MyBatis配置多种数据库相关推荐

  1. Spring Boot+Mybatis:实现数据库登录注册与两种properties配置参数读取

    〇.参考资料 1.hutool介绍 https://blog.csdn.net/abst122/article/details/124091375 2.Spring Boot+Mybatis实现登录注 ...

  2. Spring Boot——MyBatis配置带下划线命名的字段自动转换驼峰命名解决方案

    问题描述 MyBatis无法查询出属性名和数据库字段名不完全相同的数据. 即:属性名和数据库字段名分别为驼峰命名和下划线命名时查出的数据为NULL. 问题分析 MyBatis默认是属性名和数据库字段名 ...

  3. Activiti7 + Spring Boot + mybatis Plus + Oracle 数据库整合-学习篇(二)

    Activiti进阶 一.流程实例 什么是流程实例 流程实例(ProcessInstance)代表流程定义的执行实例. 一个流程实例包括了所有的运行节点.我们可以利用这个对象来了解当前流程实例的进度等 ...

  4. java spring sqlite,Spring Boot+MyBatis+SQLite配置

    Spring Boot+MyBatis+SQLite配置例子参考下面 创建新项目 项目类型务必选择箭头指定的类型,否则不会自动生成代码模版 增加依赖项 junit junit 4.13.1 test ...

  5. Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置

    Spring Boot + Mybatis 配合 AOP 和注解实现动态数据源切换配置 前言: 1. 数据库准备: 2. 环境准备: 3.代码部分 4. 测试: 5.等等 6.配合注解实现 7 .测试 ...

  6. spring boot + mybatis + layui + shiro后台权限管理系统

    后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...

  7. Spring Boot 属性配置和使用

    spring Boot 允许通过外部配置让你在不同的环境使用同一应用程序的代码,简单说就是可以通过配置文件来注入属性或者修改默认的配置. Spring Boot 系列 Spring Boot 入门 S ...

  8. Eclipse + Spring boot +mybatis + mysql

    Eclipse + Spring boot +mybatis + mysql 如题.使用Springboot 2.0 版本进行网页的开发.原理和优点很多博文已经讲过了,这里不再赘述.但是很多项目按照他 ...

  9. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

最新文章

  1. MDT 2013 从入门到精通之SQL Computer Unattended Files
  2. c语言过程中的理论杂篇。
  3. 【Linux - mysql】linux下mysql报Failed to restart mysqld.service: Unit not found
  4. mc网站服务器设置家怎么圈地,《我的世界》怎么圈地 设置方法教程
  5. 动态语言与静态语言的区别
  6. 如果Java快死了,那么它肯定看起来非常健康
  7. docker版本Mysql安装
  8. cpu只能单通道是什么表现_【小白入门】为什么要组内存双通道?
  9. 简述运行PHP文件的步骤,简述PHP运行机制
  10. magento中某个商店实现部分样式
  11. 如何在Mac上合并日历
  12. quarz设置定时器任务的有效时间段_Quartz动态指定定时时间,每秒钟执行一次
  13. [Python3网络爬虫开发实战] Appium 爬取微信朋友圈
  14. 白帽子讲web安全笔记-xss总结
  15. 51单片机的家居空气质量监测系统proteus仿真设计
  16. php调用API支付接口 可个人使用,无需营业执照(使用第三方接口,调用的天工接口。)(转自刘68)...
  17. 小松的STM32教程(6)——ADC
  18. SVN SSL错误解决
  19. Electron 远程控制
  20. ffmpeg mp4切片ts加密

热门文章

  1. let 只能在严格模式下吗_LET的完整形式是什么?
  2. 一个机器周期 计算机_计算机科学组织| 机器周期
  3. java bitset_Java BitSet hashCode()方法及示例
  4. scala字符替换_如何替换Scala中的“坏”字符?
  5. e-r模型教案高中计算机,《ER模型1》[数据库][计算机]教案.doc
  6. mui实现分享功能_MUI 分享功能(微信、QQ 、朋友圈)
  7. 使用FD_CLOEXEC实现close-on-exec,关闭子进程无用文件描述符
  8. hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle
  9. C++智能指针(二)模拟实现三种智能指针
  10. MYSQL错误代码#1045 Access denied for user 'root'@'localhost'