SpringBoot依赖之Microsoft SQL Server Driver

news2024/9/25 8:17:58

写在前面:坚持是件有意思的事情。

概念

MS SQL Server Driver
  • 依赖名称: MS SQL Server Driver
  • 功能描述: A JDBC and R2DBC driver that provides access to Microsoft SQL Server and Azure SQL Database from any Java application.
  • 中文释义:JDBC 和 R2DBC 驱动程序,提供从任何 Java 应用程序对 Microsoft SQL Server 和 Azure SQL 数据库的访问。

在 IntelliJ IDEA 下创建 Spring Boot 3.4 项目并集成 Microsoft SQL Server 驱动依赖的步骤如下。本文将详细介绍如何创建项目、配置依赖、连接到 MS SQL Server 数据库,以及进行一些基本的数据库操作。

一、环境准备

  1. IntelliJ IDEA 代码编辑器,开发利器。
  2. JDK: JDK 17 或更高版本, Spring Boot 3.4
  3. 安装 MS SQL Server:确保已经安装并配置好 Microsoft SQL Server 数据库。如果没有,可以通过 Docker 或直接安装在本地/服务器上使用。这个自行安装,推荐本地化Docker部署,支持一键卸载,干净又卫生。
  4. 获取 SQL Server 驱动:Spring Boot 项目中会自动通过 Maven 或 Gradle 管理 MS SQL Server 的依赖,无需手动下载。

二、通过 Spring Initializr 创建 Spring Boot 项目

1. 创建项目

引入依赖包,添加以下依赖:

  • Spring Web:用于构建 Web 应用。
  • Spring Data JPA:用于使用 JPA 进行数据库操作。
  • MS SQL Server Driver:用于连接 Microsoft SQL Server 数据库。
  • lombok 超级工具包
<properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

三、配置 MS SQL Server 数据库连接

1. 配置 application.properties

项目创建完成后,在 src/main/resources 目录下找到 application.propertiesapplication.yml 文件,并进行数据库连接的配置。

我使用的是 application.properties,我觉得这个看起来更舒服。.yml配置格式空格每次我都对不齐层级:
spring.application.name=spring-ms-sql-server-sql-driver

# MS SQL Server 数据库连接配置
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=spring-dependencies
spring.datasource.username=db_username
spring.datasource.password=db_password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver

# JPA 配置
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect

说明

  • spring.datasource.url:数据库的 JDBC 连接 URL,格式为 jdbc:sqlserver://主机名:端口号;databaseName=数据库名。默认的 SQL Server 端口是 1433
  • spring.datasource.usernamespring.datasource.password:MS SQL Server 的用户名和密码。
  • spring.jpa.hibernate.ddl-auto:用于控制 Hibernate 是否自动创建和更新数据库表结构。update 表示自动更新。
  • spring.jpa.show-sql:显示 SQL 语句,放鞭调试。
  • spring.jpa.database-platform:指定 SQL Server 使用的 Hibernate 方言。
2. 确保 MS SQL Server 数据库已启动

确保 SQL Server 已启动,并且能够接受连接。可以使用 SQL Server Management Studio 或命令行创建数据库及用户:

CREATE DATABASE your_database;

为用户赋予访问权限:

CREATE LOGIN your_username WITH PASSWORD = '你的密码';
USE your_database;--你的数据库名称
CREATE USER your_username FOR LOGIN your_username; -- 数据库账户名
ALTER ROLE db_owner ADD MEMBER your_username; -- 赋权

四、创建实体类和仓库

1. 创建实体类

创建一个实体类 Customer,也就是常说的pojo,可以是数据库实体类,也可以是自定义的对象:

package com.dependencies.springmssqlserversqldriver.entity;

import jakarta.persistence.*;
import lombok.Data;

/**
 * @author zhizhou   2024/9/24 18:57
 */
@Data
@Entity
@Table(name = "users") // 数据库中的表名
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String email;
}

2. 创建 JPA 仓库接口

创建一个接口 CustomerRepository 实现数据库基本操作,因为jpa中已经实现了大部分方法,相对简单很多:

package com.dependencies.springmssqlserversqldriver.repository;

import com.dependencies.springmssqlserversqldriver.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

/**
 * @author zhizhou   2024/9/24 19:00
 */
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    
    User findByName(String username);
    
    // 可以添加自定义查询方法
    User findByEmail(String email);
}

五、创建控制器测试数据库操作

创建一个控制器 UserController:

package com.dependencies.springmssqlserversqldriver.controller;

import com.dependencies.springmssqlserversqldriver.entity.User;
import com.dependencies.springmssqlserversqldriver.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


/**
 * @author zhizhou   2024/9/24 19:01
 */
@RestController
@RequestMapping("/users")
public class UserController {
    
    @Autowired
    private UserRepository userRepository;
    
    // 获取所有用户
    @GetMapping
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
    
    // 根据 ID 获取用户
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userRepository.findById(id).orElse(null);
    }
    
    // 创建新用户
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userRepository.save(user);
    }
    
    // 更新用户
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User userDetails) {
        User user = userRepository.findById(id).orElse(null);
        if (user != null) {
            user.setName(userDetails.getName());
            user.setEmail(userDetails.getEmail());
            return userRepository.save(user);
        }
        return null;
    }
    
    // 删除用户
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userRepository.deleteById(id);
    }
}

六、运行项目并测试

1. 运行 Spring Boot 应用

在 IntelliJ IDEA 中,运行Application 并运行项目。

package com.dependencies.springmssqlserversqldriver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringMsSqlServerSqlDriverApplication {
    
    public static void main(String[] args) {
        SpringApplication.run(SpringMsSqlServerSqlDriverApplication.class, args);
    }
}
2. 使用 Postman 或 cURL 测试 API
  • 创建新客户

    curl -X POST http://localhost:8080/customers \
         -H "Content-Type: application/json" \
         -d '{"name": "一周一志程序员", "email": "zhouzhi@csdn.com"}'
    
  • 获取所有客户

    curl http://localhost:8080/customers
    
  • 获取特定客户

    curl http://localhost:8080/customers/1
    
  • 更新客户信息

    curl -X PUT http://localhost:8080/customers/1 \
         -H "Content-Type: application/json" \
         -d '{"name": "Jane Doe", "email": "jane@example.com"}'
    
  • 删除客户

    curl -X DELETE http://localhost:8080/customers/1
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163014.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AOP实现原理-动态代理

目录 代理的基础概念 示例1&#xff1a;静态代理&#xff08;场景&#xff1a;客户通过中介租房东的房子&#xff09; 示例2&#xff1a;JDK动态代理实现房东、中介出租房屋 示例3&#xff1a;CGLib动态代理实现房东出租房屋 示例4&#xff1a;观察Spring IOC容器中代理对象…

One-Class Classification: A Survey

I. INTRODUCTION 1.定义 OCC 是一种特殊的多类分类&#xff0c;训练数据仅来自单个正类。目标是学习表示和/或分类器&#xff0c;以便在推理过程中识别正类查询。 2.应用 异常图像检测、异常事件检测、生物识别&#xff08;活体检测、反诈骗&#xff09; 3.与其他领域的比…

Python连接Kafka收发数据等操作

目录 一、Kafka 二、发送端&#xff08;生产者&#xff09; 三、接收端&#xff08;消费者&#xff09; 四、其他操作 一、Kafka Apache Kafka 是一个开源流处理平台&#xff0c;由 LinkedIn 开发&#xff0c;并于 2011 年成为 Apache 软件基金会的一部分。Kafka 广泛用于构…

在Java中,关于final、static关键字与方法的重写和继承【易错点】

在Java中&#xff0c;关于final、static关键字与方法的重写和继承【易错点】 1.final方法不能被重写2.static方法不是重写&#xff0c;而是遮蔽3.final与static的组合4.final与继承5.static与继承 1.final方法不能被重写 如果父类中的方法被声明为final&#xff0c;那么这个方法…

开源音频处理项目推荐【持续更新】

Audacity 介绍&#xff1a;Audacity是一款功能强大的开源音频编辑软件&#xff0c;适用于多种操作系统&#xff0c;包括Windows、macOS和Linux。它支持多轨音频编辑、录制&#xff0c;并且提供了丰富的音频处理功能&#xff0c;如剪切、复制、粘贴、混音、降噪等 。Audacity的…

基于Python+flask+MySQL+HTML的全国范围水质分析预测系统,可视化用echarts,预测算法随机森林

1绪论 近年来&#xff0c;水质监测系统的进步显著&#xff0c;这在全球环保意识不断提升的背景下尤为明显。大量资源被投入到水质监测技术的研发和应用中&#xff0c;以不断优化监测效能。水资源的保护及健康环境的维护&#xff0c;这种趋势旨在提升人们生活质量&#xff0c;确…

微软宣称其新工具可纠正人工智能幻觉 但专家依然对此表示怀疑

人工智能经常胡言乱语&#xff0c;微软现在说它有办法解决这个问题&#xff0c;但我们有理由对此持怀疑态度。微软今天发布了一项名为"更正"&#xff08;Correction&#xff09;的服务&#xff0c;它可以自动修改人工智能生成的与事实不符的文本。Correction 首先会标…

华为认证HCIA篇--网络通信基础

大家好呀&#xff01;我是reload。今天来带大家学习一下华为认证ia篇的网络通信基础部分&#xff0c;偏重一些基础的认识和概念性的东西。如果对网络通信熟悉的小伙伴可以选择跳过&#xff0c;如果是新手或小白的话建议还是看一看&#xff0c;先有个印象&#xff0c;好为后续的…

8.隐私与安全 - 使用ChatGPT时的注意事项【8/10】

引言 在数字时代&#xff0c;隐私和安全已成为全球关注的焦点。随着技术的发展&#xff0c;个人信息和数据的收集、存储、处理和传输变得越来越普遍&#xff0c;这既带来了便利&#xff0c;也带来了风险。保护个人隐私和数据安全不仅是法律的要求&#xff0c;也是维护公众信任…

solidwork中查看装配体螺丝或零件

假设我的PETG打印件到了&#xff0c;想知道这个螺丝的型号&#xff0c;怎么办 解决办法&#xff1a; 第一步先看看有没有固定的字样 如果固定的话是不行的。需要这样做&#xff1a; 把这里给关了 接下来第二步&#xff0c;点击你想查看的螺丝 然后就会跳到零件图 可以看到直径…

Cloudflare为网站添加AI审计 可检查AI爬虫何时抓取和抓取频次以及直接屏蔽爬虫

网络服务提供商 Cloudflare 宣布即日起为所有网站 (包括免费托管的网站) 带来 AI 审计功能&#xff0c;该功能目前处于测试阶段&#xff0c;可以分析 AI 公司的爬虫和抓爬数据。新的 AI 审计工具 (Cloudflare AI Audit) 主要提供 AI 公司的爬虫何时到网站来抓取数据、抓取的数据…

Unity 热更新(HybridCLR+Addressable)-资源更新

七、资源更新 创建一个叫Aot的文件夹&#xff0c;用来存放不会热更新的资源 这个修改为第三个 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b8be5e6465184ad5ad6173c6870bfa06.png 这个是更新 在更新或者打包时遇到端口被占的报错&#xff0c;不用理会&#xf…

二、认识大模型

认识大模型 什么是大模型&#xff1f;发展趋势AGI是不是泡沫大模型对比【时效】大模型特点大模型技术原理向量化除了向量化&#xff0c;大模型还具有特征提取特点 总结结语 什么是大模型&#xff1f; 大模型是大规模语言模型&#xff08;Large Language Model&#xff09;的简…

mysql如何替换数据库所有表中某些字段含有的特定值

目录 背景查询所有表名查询表的所有字段过虑特征字段替换字段中含有的特定值 背景 公司的测试域名更换了&#xff0c;导致存放在数据库中的域名也要跟着替换&#xff0c;当然把域名存放在数据库表中是不科学的&#xff0c;不建议这样做&#xff0c;但公司的同事就这样做了&…

由动静压之比求马赫数的MATLAB函数

函数介绍 输入&#xff1a;动静压之比 p r e pre pre 输出&#xff1a;马赫数 M a c h Mach Mach 【注】仅适合亚音速的情况&#xff0c;如果动静压之比过大或过小&#xff0c;会有相应的提示 函数源代码 function [m] pre2mach(pre) m(5*(pre1).^0.2857-5).^0.5; if pre&l…

Leetcode 螺旋矩阵

算法思想&#xff1a; 这个算法的目标是按照顺时针螺旋的顺序从矩阵中取出元素。为了做到这一点&#xff0c;整个思路可以分成几个关键步骤&#xff1a; 定义边界&#xff1a;首先需要定义四个边界变量&#xff1a; left&#xff1a;当前左边界的索引。right&#xff1a;当前右…

uniapp 实现3d轮播图,也就是中间的放大两边的缩小 用swiper和swiper-item就能实现

话不多说&#xff0c;直接上代码&#xff0c;无需引入外部资源&#xff0c; 用swiper和swiper-item就能实现 先上结构代码 <swiper class"header" circular previous-margin"80rpx" next-margin"60rpx" :current"current"change&…

点亮城市安全:高科技助力精准定位路灯漏电‘隐形杀手

在城市的每一个角落&#xff0c;路灯如同守夜人&#xff0c;默默照亮归家的路。然而&#xff0c;当这些守护者出现“漏电”隐患时&#xff0c;不仅威胁着行人的安全&#xff0c;还可能引发一系列电气故障。那么&#xff0c;如何精准快速地找出这些隐藏的漏电点&#xff0c;并有…

二叉树进阶oj题【二叉树相关10道oj题的解析和代码实现】

目录 二叉树进阶oj题1.根据二叉树创建字符串2.二叉树的层序遍历3.二叉树的层序遍历 II4.二叉树的最近公共祖先5.二叉搜索树和双向链表6.从前序与中序遍历序列构造二叉树7.从中序和后序遍历序列来构造二叉树8.二叉树的前序遍历&#xff0c;非递归迭代实现9.二叉树中序遍历 &…

防止电脑电池老化,禁止usb或者ac接口调试时充电

控制android系统&#xff0c;开发者模式&#xff0c;开启和禁止充电 连接 Android 手机到电脑的 USB 端口。 下载并安装 Android Debug Bridge (ADB) 工具[1]。 USB&#xff1a; 在命令行中输入 adb shell dumpsys battery set usb 0&#xff0c;以禁止 USB 充电。 在命令…