mybatis-config.xml是支持配置多种数据库的,本文将介绍在Spring Boot中使用配置类来配置。
1. 配置application.yml
# mybatis配置
mybatis:
check-config-location: false
type-aliases-package: ${base.package}.model
configuration:
map-underscore-to-camel-case: true
# 二级缓存的总开关
cache-enabled: false
mapper-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();
}
@Bean
public JdbcTemplate jdbcTemplate(){
return new JdbcTemplate(dataSource());
}
@Bean
public 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;
}
@Bean
public 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
<<span class="hljs-keyword">select</span> id=<span class="hljs-string">"findAuthorityByUrl"</span> resultType=<span class="hljs-string">"java.lang.String"</span> databaseId=<span class="hljs-string">"postgresql"</span>>
<span class="hljs-function">SELECT
<span class="hljs-title">string_agg</span>(<span class="hljs-params"> tsma.authority, <span class="hljs-string">','</span></span>) <span class="hljs-keyword">as</span> authority
FROM
t_side_menu tsm
LEFT JOIN t_side_menu_authority tsma ON tsm.id</span> = tsma.side_menu_id
</<span class="hljs-keyword">select</span>></code></pre>
方法2
<select id="selectByPids" parameterType="String" resultMap="SuperResultMap">
SELECT
tsm.*,
<if test="_databaseId == 'mysql'">
group_concat( tsma.authority ) as authority
</if>
<if test="_databaseId == 'postgresql'">
string_agg( tsma.authority, ',') as authority
</if>
FROM
t_side_menu tsm
LEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id
WHERE pid IN (#{pids})
GROUP BY
tsm.id
</select>
题外话
如果有兴趣,请给oauthserer项目一个star。oauthserver是一个基于Spring Boot Oauth2的完整的独立的Oauth2 Server微服务。项目的目的是,仅仅需要创建相关数据表,修改数据库的连接信息,你就可以得到一个Oauth2 Server微服务。
原文地址:https://segmentfault.com/a/1190000018193491?utm_source=tag-newest </div>
SpringMVC+ajaxFileUpload上传图片 IE浏览器弹下载框问题解决方式
Javascript正则中的exec和match
Java中byte转int的方法
推断php操作mysql(添删改查)是否成功
关于人工智能的一些思考~
Tomcat的虚拟主机的配置
最近遇到的若干技术问题
2015年工作中遇到的问题:11-20
2015年工作中遇到的问题:11-20
- 最新文章
-
《设计模式》组合模式---伊利工厂
三分钟教你学Git(十四) 之 线下传输仓库
【直播预告】7月25日3D游戏引擎免费公开课答疑第三期,有奖问答!
Domino函件收集器的配置及使用方法
RDLC后台自己定义报表模板
Unity自己主动打包工具
Cocos2d-x开发实例介绍帧动画使用
[Swift]LeetCode209. 长度最小的子数组 | Minimum Size Subarray Sum
[Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮
[Swift通天遁地]二、表格表单-(6)创建美观的表格弹性下拉刷新效果
- 热门文章
-
[Swift]LeetCode208. 实现 Trie (前缀树) | Implement Trie (Prefix Tree)
[Swift]LeetCode207. 课程表 | Course Schedule
[Swift]LeetCode203. 移除链表元素 | Remove Linked List Elements
[Swift]LeetCode201. 数字范围按位与 | Bitwise AND of Numbers Range
[Swift通天遁地]二、表格表单-(5)实现表格下拉和上拉刷新效果
[Swift通天遁地]二、表格表单-(4)使用系统自带的下拉刷新控件,制作表格的下拉刷新效果
[Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应
数据结构——算法之(040)(最大公约数问题)
SpringMvc參数的接受以及serializeArray的使用方法
hdoj 1875 畅通project再续【最小生成树 kruskal && prim】