一、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:端口号 连接。

Spring Boot,Mybatis Plu连接 Sql Server 数据库源(根据 sql server 自动生成代码结构),解决报错_bc

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


解决:配置文件中加上:

Spring Boot,Mybatis Plu连接 Sql Server 数据库源(根据 sql server 自动生成代码结构),解决报错_端口号_02

至此,文章结束!!!