MyBatis多数据库支持databaseId为null问题解决

本文主要讲述MyBatis多数据库支持databaseId为null的问题如何解决,在此之前,我们先来看下Mybatis如何配置支持多数据库。

MyBatis多数据库支持

让一个项目支持不同的数据库在企业开发中是一个比较常见的需求,即一套代码兼容不同的数据库。由于不同的数据库支持的sql语法稍有差别,所以某些功能需要根据数据库的不同书写不同的sql语句。对于这种需求,首先能够想到的解决方案就是针对不同的数据库维护不同的mapper.xml文件,但是这种方案会严重增加开发和维护的成本。因为不同数据库支持的语法大部分都是相同的,不同的毕竟是少数,我们希望只重写不同的部分而重用相同的部分。

针对这种情况,MyBatis提供了解决方案,即databaseIdProvider和databaseId。通过MyBatis提供的这种功能,我们就只需要维护一套mapper.xml文件即可。

查看Linux系统是centos还是ubuntu的方法

前言

本文主要讲述如何查看Linux系统是centos还是ubuntu的4种方法。

常用Linux系统分两大类:
RedHat系列:主要有Redhat、Centos、Fedora等
Debian系列:Debian、Ubuntu等

总结4种区分centos和ubuntu的方法

1、lsb_release -a

使用lsb_release -a命令可以列出你的Linux系统是哪个Linux发行版,还可以列出具体是第几个版本。

2、cat /etc/redhat-release && cat /etc/lsb-release

redhat或centos对应命令:cat /etc/redhat-release
ubuntu对应命令:cat /etc/lsb-release

SpringBoot配置文件的优先级

本文主要详细介绍SpringBoot项目中配置文件的优先级。

优先级高的配置会覆盖优先级低的配置。

总体优先级

(1)命令行参数,比如--server.port=8081
(2)JVM系统属性,通过System.getProperties()方法获取;
(3)系统环境属性,通过System.getenv()方法获取;
(4)jar包外部的application-{profile}.properties/yml配置文件,如果没有指明激活的profile,则默认为default;
(5)jar包内部的application-{profile}.properties/yml配置文件,如果没有指明激活的profile,则默认为default;
(6)jar包外部的application.properties/yml配置文件;
(7)jar包内部的application.properties/yml配置文件;
(8)通过@Configuation注解类上的@PropertySource注解引入的配置文件;
(9)通过SpringApplication.setDefaultProperties指定的默认属性;

Windows服务设置依赖关系

语法:
sc config "服务名称" depend= "依赖的服务名称"

注意:depend=后必须有空格

如果有多个依赖项,则以“/”分割:
sc config "服务A" depend= "服务1"/"服务2"/"服务3"/......

示例:
sc config "smaple-admin" depend= "mysql"/"redis"

说明:
smaple-admin服务依赖mysql和redis服务,所以在启动smaple-admin服务之前,会先启动mysql和redis服务。

Seata简介

什么是Seata

Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。

在Seata开源之前,其内部版本在阿里系内部一直扮演着应用架构层数据一致性的中间件角色,帮助经济体平稳的度过历年的双11,对上层业务进行了有力的技术支撑。经过多年沉淀与积累,其商业化产品先后在阿里云、金融云上售卖。2019.1为了打造更加完善的技术生态和普惠技术成果,Seata正式宣布对外开源,未来Seata将以社区共建的形式帮助用户快速落地分布式事务解决方案。

Seata官网地址:
https://seata.io/