news 2026/8/24 2:36:02

10分钟搞定 Spring Boot 集成 SQL Server:连上微软数据库不再绕弯

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10分钟搞定 Spring Boot 集成 SQL Server:连上微软数据库不再绕弯

10分钟搞定 Spring Boot 集成 SQL Server:连上微软数据库不再绕弯

【免费下载链接】springboot-learning-examplespring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。项目地址: https://gitcode.com/gh_mirrors/sp/springboot-learning-example

如果你需要 Spring Boot 集成 SQL Server 来做企业级 CRUD,或者对接一个跑在微软数据库上的遗留系统,完全不用从头研究老的 JDBC 配置。两个依赖、几行连接配置,剩下的 JPA 部分都交给 Spring Boot。

⚙️ 先把依赖和连接串配好

全程只动两个文件:pom.xml 里声明 mssql-jdbc 驱动和 JPA starter,application.properties 里写 SQL Server 连接配置。版本号由 Boot 父 POM 统一管理,别自己写,免得和驱动版本打架。方言也不用手配,Spring Boot 能从连接串里认出来,认错了再像最后一行那样显式钉死。

<!-- 微软官方 JDBC 驱动,runtime 就够 --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <scope>runtime</scope> </dependency> <!-- JPA 全家桶,含 HikariCP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
# 1433 是默认端口,改过就跟着改 spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=testdb;encrypt=true;trustServerCertificate=true spring.datasource.username=sa spring.datasource.password=YourStrongPassword # 驱动类名,不写一般也能自动识别,写上更稳 spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver # 表结构自动建/改,省去手写 DDL spring.jpa.hibernate.ddl-auto=update # SQL 打到控制台,排错全靠它 spring.jpa.show-sql=true

🔌 实体和 Repository 各写一个就够

实体类就是三行注解的事,字段不用多,三个足够。项目里 User.java 就是 @Entity + @Id 这套写法,照抄即可。Repository 继承 JpaRepository 就完事了,增删改查现成的——JPA 对接微软数据库,就是这么一行接口的事。方法名按 findBy 约定起名,查询逻辑 Spring Data 帮你写好,连 where 都不用敲。UserRepository.java 展示了最小形态。

@Entity @Table(name = "t_user") public class User { @Id @GeneratedValue private Long id; private String username; private String email; // Getters and setters }
public interface UserRepository extends JpaRepository<User, Long> { User findByUsername(String username); }

🧪 跑个测试确认没白配

写个最小测试验证整条链路:先存一条记录,再用 findById 取回来,orElseThrow() 不抛异常就说明连接、表结构、数据一路都通了。测试通过后,控制台会打出几行 INSERT 语句,打开 SQL Server 管理工具看 t_user 表,刚好多出一条新记录,数据确实落库了。

@SpringBootTest class SqlServerIntegrationTest { @Autowired private UserRepository userRepository; @Test void testConnection() { User user = new User(); user.setUsername("test"); user.setEmail("test@example.com"); userRepository.save(user); userRepository.findById(user.getId()).orElseThrow(); } }

🐛 连不上?三个高频坑

  1. Communications link failure→ SQL Server 那边没开 TCP/IP,或者端口不是默认 1433。配置管理器里启用 TCP/IP,连接串端口对齐。
  2. 握手失败、报加密相关错误→ 客户端强制加密但服务端没配有效证书。连接串上追加 encrypt=true;trustServerCertificate=true 跳过校验。
  3. 方言不对→ Hibernate 生成的表结构和微软数据库语法对不上。显式把 spring.jpa.properties.hibernate.dialect 指定为 SQLServer2012Dialect。

🚀 上生产前顺手改两处

  • Spring Boot 自带的 HikariCP 连接池默认最大 10 个连接,开发够用,生产流量一定不够。显式设置 spring.datasource.hikari.maximum-pool-size 和 minimum-idle,按实际 QPS 调。
  • 业务里大量复杂 SQL、存储过程的话,硬用 JPA 会很痛苦。项目里的 springboot-mybatis 模块给了 MyBatis 版写法,同样的数据源,换成注解/XML 组织 SQL 更可控。

到这里,写 Driver、加载 properties、手动管连接生命周期的老一套就全省了——DataSource 是现成的,你只管业务。

【免费下载链接】springboot-learning-examplespring boot 实践学习案例,是 spring boot 初学者及核心技术巩固的最佳实践。项目地址: https://gitcode.com/gh_mirrors/sp/springboot-learning-example

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 2:34:26

MySQL字符集冲突Error 3988:从utf8mb4到utf8的转换难题与根治方案

1. 项目概述&#xff1a;从一次棘手的字符集报错说起 那天下午&#xff0c;我正在处理一个从旧系统迁移过来的数据库&#xff0c;准备将几张表的数据合并到一个新的业务库中。操作看起来很简单&#xff0c;无非就是 INSERT INTO ... SELECT ... 。然而&#xff0c;当执行语句…

作者头像 李华
网站建设 2026/8/24 2:32:22

8G显存实现720P高清人像生成:MinimaxH3模型优化与ComfyUI工作流部署

这次我们来看一个针对 MinimaxH3 模型的优化工作流&#xff0c;核心目标是解决一个非常实际的问题&#xff1a;如何在有限的 8G 显存下&#xff0c;实现高质量的 720P 图像生成&#xff0c;并重点消除生成人脸时常见的模糊问题。对于很多使用消费级显卡&#xff08;如 RTX 4060…

作者头像 李华
网站建设 2026/8/24 2:32:11

利用免费AI大模型实现JSON文件高质量自动化汉化:工程实践指南

在实际软件本地化工作中&#xff0c;JSON 文件是存储界面文本、提示信息等可翻译内容的主流格式。无论是开发桌面应用、Web 前端&#xff0c;还是配置各种开发工具&#xff08;如 VSCode、Postman、Cursor&#xff09;&#xff0c;都离不开对 JSON 文件的汉化。传统做法是使用机…

作者头像 李华
网站建设 2026/8/24 2:31:14

逃离“小花花”:在QQ里,我用五年时间为成年人建了一座“修仙”城

QQ里究竟缺乏什么样的机器人&#xff1f; 很多人的第一反应可能是缺乏新颖的玩法、缺乏精美的画风。但在我们看来&#xff0c;作为一个老牌的社交社区&#xff0c;QQ真正缺乏的&#xff0c;是一个能让80后、90后等成年群体也能在其中愉快社交的环境。 这五年里&#xff0c;我们…

作者头像 李华
网站建设 2026/8/24 2:31:01

为什么极简工具链反而跑分更高?聊聊模型与插件的过拟合问题

最近在看DeepSeek Harness的时候&#xff0c;有一个现象非常值得玩味。DeepSeek给Harness设计了多种模式&#xff0c;其中标准模式包含文件编辑、Shell、搜索、规划等一应俱全的工具链&#xff0c;而极简模式仅仅保留了持久化的Bash和文件编辑器。DeepSeek明确表示&#xff0c;…

作者头像 李华