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(); } }🐛 连不上?三个高频坑
- Communications link failure→ SQL Server 那边没开 TCP/IP,或者端口不是默认 1433。配置管理器里启用 TCP/IP,连接串端口对齐。
- 握手失败、报加密相关错误→ 客户端强制加密但服务端没配有效证书。连接串上追加 encrypt=true;trustServerCertificate=true 跳过校验。
- 方言不对→ 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),仅供参考