一、Spring Boot 整合 Sql server
1、首先添加依赖:
<!--sql server依赖-->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>9.2.1.jre8</version>
</dependency>
2、配置文件(application.yml)中配置:
spring:
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://IP地址:端口号;databaseName=数据库名
username: XXXXX
password: XXXXX
注意 sql server 的端口号和连接方式
1、我们知道 mysql:使用 navicat 连接时,直接输入 IP 即可连接,在配置文件中也是输入 IP:端口号
连接
但注意: 2、sql server 不一样,navicat 或 sql server 管理工具 连接时一定要加上端口号,也就是你这个 sql server 运行在哪个端口,而且注意:端口号是 , 逗号连接,而不是冒号
好在:在配置文件中是输入 IP:端口号
连接。
Sql Server 默认端口是 1433
二、MyBatis Plus 自动生成 Sql Server 代码
1、首先引入依赖:
<!--MP自动生成器依赖-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency> <!--自动生成的模板:模板有三种:Velocity(默认)、Freemarker、Beetl -->
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
2、输入生成器代码
public class MPGenerator {
public static void main(String[] args) {
//可以直接去官方文档上查看
FastAutoGenerator
.create("jdbc:sqlserver://IP地址:端口号;databaseName=数据库名",
"账号", "密码")
.globalConfig(builder -> {
builder.author("XXX")
.disableOpenDir()
.outputDir(System.getProperty("user.dir")+
"/src/main/java");
})
.dataSourceConfig(builder ->
builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent("父表名(比如:com.abc.abc)")
.controller("controller")
.service("service")
.serviceImpl("service.impl")
.mapper("mapper")
.entity("entity");
})
.strategyConfig(builder -> {
builder.addInclude("表名")
.entityBuilder().enableLombok();
})
.templateEngine(new VelocityTemplateEngine())
.execute();
}
}
运行报错
三、处理 Mybatis Plus 连接 Sql Server 驱动报错
问题一:com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 ClientConnectionId:b00eb92e-cac6-46bb-8472-9f2127cbb905
解决: 换成低版本依赖
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<!--我的是jdk是8,后面jre8需要对应自己的jdk版本-->
<version>6.4.0.jre8</version>
</dependency>
解决问题一后,又报错:
问题二:com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]". ClientConnectionId:8895b2e7-f471-43f3-9c76-654035427cd
也就是:The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
解决: 换驱动:
去掉之前的 sql server 驱动:
<!--sql server依赖-->
<!--
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.4.0.jre8</version>
</dependency>
-->
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.2.8</version>
</dependency>
配置文件改为:
spring:
datasource:
driver-class-name: net.sourceforge.jtds.jdbc.Driver
url: jdbc:jtds:sqlserver://IP地址:端口号;databaseName=数据库名
username: XXXXX
password: XXXXX
同理:自动生成代码中的 url 也要改:
.create("jdbc:jtds:sqlserver://IP地址:端口号;databaseName=数据库名",
"账号", "密码")
再次运行
解决问题二后,运行 Mybatis Plus 自动生成代码没报错,启动 Spring Boot 项目报错
问题三:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSourceScriptDatabaseInitializer' defined in class path resource [org/springframework/boot/autoconfigure/sql/init/DataSourceInitializationConfiguration.class]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError
Caused by: java.lang.AbstractMethodError: null
解决:配置文件中加上:
至此,文章结束!!!