添加SqlService数据库连接驱动依赖
- 阿里云maven仓库。仓库地址,搜索关键词SqlService
<dependency> <groupId>org.formcept</groupId> <artifactId>sqljdbc42</artifactId> <version>4.2</version> </dependency>
- maven官方仓库。官方地址
<dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>12.2.0.jre11</version> </dependency> //或者 <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc42</artifactId> <version>4.0</version> </dependency>
配置文件,yml配置如下,properties的自行转换格式即可。
- 单数源
datasource: username: [账号] password: [密码] url: jdbc:sqlserver://[Ip]:[端口号,默认是1433];DatabaseName[库名] driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver[驱动类,阿里云和官方仓库包名都是一样的]
- 多数据源
datasource: #主库数据源mysql master: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://[Ip]:3306/[库名]?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true username: root password: root # 从库数据源 sqlservice slave: username: [账号] password: [密码] url: jdbc:sqlserver://[Ip]:[端口号,默认是1433];DatabaseName[库名] driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver[驱动类,阿里云和官方仓库包名都是一样的]
使用
- 单数源的配置好以上就可按照正常写测试使用了。参考文章
- 多数据源的
(1).RuoYi框架的已经整合好了,直接在Service层实现类方法上 加注解 @master @Slave 不加注解默认是master主库。
(2)其他,主要时把mapper层区分补贴的数据原放到不同的包下,然后为补贴mapper添加不同数据源配置请参考文章import java.util.List; @Service public class TestServiceImpi implements TestService { @Autowired private TestMapper testMapper; @Override @Slave public List<Test> test(){ return testMapper.test(); } }
相关报错处理
- 使用RuoYi框架,报错对象名 ‘DUAL’ 无效。spring在连接到数据时会有一个查询,以确认连接是否成功。DUAL时mysql数据库的,sqlservice没有这个对象。
解决方法,修改配置文件的数据连接校验查询语句SELECT 1 FROM DUAL 改为 SELECT 1com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'DUAL' 无效。
# spring配置 spring: redis: host: localhost port: 6379 password: datasource: ....... dynamic: druid: initial-size: 5 min-idle: 5 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 #连接校验查询语句 validationQuery: SELECT 1
- 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的问题。是SQL service版本太低不支持加密连接,解决方式一修改jdk和jrede的java.security 配置文件的jdk.tls.disabledAlgorithms,去掉TLSv1, TLSv1.1 参考文章
- 报错账号无法登录;可能是账号名或密码错误、账号权限等相关问题
- 连接不上,可能是驱动依赖不对,或者Ip端口写错了,等配置文件错误相关