基于SpringBoot后端实现连接MySQL数据库并存贮数据

目录

一、什么是MySQL数据库

二、基于SpringBoot框架连接MySQL数据库

 1、首先添加MySQL依赖:

2、配置数据库连接:

 3、创建实体类:

4、创建Repository接口:

5、使用Repository:

三、编写业务SQL语句

1、使用Spring Data JPA的方法命名约定:

2、用@Query注解:你可以在Repository接口的方法上使用@Query注解来编写自定义的SQL查询。

3、使用EntityManager:你可以通过注入EntityManager对象来执行原生的SQL查询。

四、常见SQL语句使用(附学习网站)

基本的SQL语句示例,包括查询、插入、更新和删除。

1、查询数据(SELECT):

2、插入数据(INSERT):

4、更新数据(UPDATE):

5、删除数据(DELshi

使用案列(登陆注册):

密码加密:

五、总结 


博主介绍:✌专注于前后端领域开发的优质创作者、秉着互联网精神开源贡献精神,答疑解惑、坚持优质作品共享。本人是掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战,深受全网粉丝喜爱与支持✌有需要可以联系作者我哦!

🍅文末三连哦🍅

👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟

一、什么是MySQL数据库

MySQL是一种流行的关系型数据库管理系统(RDBMS),它是开源的,由瑞典公司MySQL AB开发。现在MySQL是Oracle公司的一部分,但MySQL仍然作为开源项目继续开发和维护。

MySQL数据库具有以下特点:

1. 关系型数据库管理系统(RDBMS):MySQL是一种关系型数据库,数据以表格的形式存储,这些表格可以通过关系进行连接。

2. 开源和免费:MySQL是开源的,意味着你可以免费使用它,而且有一个庞大的开源社区支持。

3. 跨平台性:MySQL支持多种操作系统,包括Linux、Windows、macOS等,可以在各种环境中部署和运行。

4. 高性能:MySQL是一种高性能的数据库管理系统,能够处理大量的数据和并发请求。

5. 可扩展性:MySQL支持主从复制、分片等技术,可以实现数据库的水平和垂直扩展。

6. 丰富的功能:MySQL提供了许多功能,包括事务支持、索引、触发器、存储过程、视图等,使得它适用于各种不同的应用场景。

7.MySQL应用:于Web应用程序、企业应用、移动应用等各种场景,是最受欢迎的数据库管理系统之一。

二、基于SpringBoot框架连接MySQL数据库

 1、首先添加MySQL依赖

pom.xml文件中添加MySQL连接器依赖。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.26</version> <!-- 根据需要选择版本 -->
</dependency>

2、配置数据库连接

application.propertiesapplication.yml文件中配置MySQL数据库连接信息。 

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

或者在application.yml中: 

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_database_name
    username: your_username
    password: your_password
    driver-class-name: com.mysql.cj.jdbc.Driver

 3、创建实体类

创建与数据库表对应的实体类,并使用JPA注解进行标记。

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    private Long id;
    private String username;
    private String email;
    // Getters and setters
}

4、创建Repository接口

创建一个继承自Spring Data JPA的Repository接口。这将允许你执行数据库操作。 

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

5、使用Repository

在你的服务类或控制器中注入UserRepository,以便进行数据库操作。 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    public List<User> getAllUsers() {
        return userRepository.findAll();
    }

    // 其他方法,如保存用户,删除用户等
}

三、编写业务SQL语句

在使用Spring Boot时,你可以使用多种方式编写SQL语句,包括:

1、使用Spring Data JPA的方法命名约定

Spring Data JPA允许你通过在Repository接口中定义方法名来自动生成SQL查询。例如,如果你的实体类是User,你可以在UserRepository接口中定义如下方法来查询用户:

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByUsername(String username);
}

在这个例子中,Spring Data JPA会根据方法名自动生成查询语句,用于根据用户名查询用户。

2、用@Query注解:你可以在Repository接口的方法上使用@Query注解来编写自定义的SQL查询。

例如:

public interface UserRepository extends JpaRepository<User, Long> {
    @Query("SELECT u FROM User u WHERE u.username = :username")
    List<User> findByUsername(@Param("username") String username);
}

3、使用EntityManager:你可以通过注入EntityManager对象来执行原生的SQL查询。

例如:

import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;

@Service
public class UserService {
    @Autowired
    private EntityManager entityManager;

    public List<User> findUsersByUsername(String username) {
        Query query = entityManager.createNativeQuery("SELECT * FROM user WHERE username = ?", User.class);
        query.setParameter(1, username);
        return query.getResultList();
    }
}

在这个例子中,我们使用EntityManager对象执行了原生的SQL查询,然后将结果映射为User实体类的列表。

四、常见SQL语句使用(附学习网站)

基本的SQL语句示例,包括查询、插入、更新和删除。

1、查询数据(SELECT)

-- 查询表中所有数据
SELECT * FROM table_name;

-- 查询特定列数据
SELECT column1, column2 FROM table_name;

-- 查询满足条件的数据
SELECT * FROM table_name WHERE condition;

-- 查询并排序
SELECT * FROM table_name ORDER BY column_name;

-- 查询并限制结果数量
SELECT * FROM table_name LIMIT 10;

2、插入数据(INSERT)

-- 插入单行数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2);

-- 插入多行数据
INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);

4、更新数据(UPDATE)

-- 更新表中所有数据
UPDATE table_name SET column1 = new_value1, column2 = new_value2;

-- 更新满足条件的数据
UPDATE table_name SET column1 = new_value1 WHERE condition;

5、删除数据(DELshi

-- 删除表中所有数据
DELETE FROM table_name;

-- 删除满足条件的数据
DELETE FROM table_name WHERE condition;

使用案列(登陆注册):

创建用户表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    password VARCHAR(100) NOT NULL
);

用户注册(插入新用户)

INSERT INTO users (username, email, password) VALUES ('user1', 'user1@example.com', 'hashed_password');

其中,hashed_password是经过加密处理的密码,可以使用加密算法(如bcrypt)对密码进行加密,然后再存储到数据库中。

用户登录(验证用户名和密码)

SELECT * FROM users WHERE username = 'user1' AND password = 'hashed_password';

查询将返回匹配给定用户名和密码的用户信息。请注意,实际情况中应该对密码进行加密,然后再进行比较,以增加安全性。

密码加密

在实际应用中,密码通常应该加密存储,以防止数据库泄露导致密码被泄露。这里假设使用bcrypt算法进行密码加密。在Java中,可以使用BCryptPasswordEncoder等库进行加密,例如:

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

String password = "user_password";
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);

//然后将hashedPassword插入到数据库中。

五、总结 

使用Spring Boot操作MySQL数据库的总结如下:

  1. 简化开发:Spring Boot提供了简洁的配置和自动化的工作流程,使得在Spring应用中集成MySQL变得非常容易。它通过自动配置和约定优于配置的原则,大大简化了开发人员的工作。

  2. 强大的生态系统:Spring Boot构建在Spring框架之上,具有庞大而活跃的社区支持和丰富的生态系统。这意味着你可以轻松地找到解决问题的文档、教程和第三方库。

  3. 快速开发和部署:Spring Boot提供了内置的Web服务器(如Tomcat、Jetty),因此你可以直接打包应用程序并运行,无需部署到外部容器。这加快了开发和部署的速度。

  4. 集成Spring Data JPA:Spring Boot集成了Spring Data JPA,这是一个强大的数据访问框架,可以极大地简化与数据库的交互。使用Spring Data JPA,你可以通过定义Repository接口和方法来执行各种数据库操作,而无需编写复杂的SQL语句。

  5. 自动配置数据库连接:Spring Boot提供了自动配置数据库连接的功能,只需在配置文件中提供数据库相关信息,Spring Boot就能自动创建数据源并连接到数据库。

  6. 灵活的配置选项:虽然Spring Boot提供了自动配置,但你仍然可以根据需要进行自定义配置。它提供了丰富的配置选项,允许你灵活地调整应用程序的行为。

优点:

  • 快速启动:Spring Boot应用程序可以快速启动,并且具有较低的内存消耗,适合于微服务架构和云部署。
  • 简化配置:Spring Boot的自动配置功能简化了配置过程,减少了开发人员的工作量。
  • 丰富的生态系统:Spring Boot基于Spring框架,拥有丰富的生态系统和活跃的社区支持。
  • 集成Spring Data JPA:Spring Boot集成了Spring Data JPA,简化了与数据库的交互和持久化操作。

缺点:

  • 隐藏细节:虽然Spring Boot简化了开发过程,但有时它会隐藏一些细节,导致开发人员对底层工作原理的理解不足。
  • 学习曲线:尽管Spring Boot简化了配置和开发流程,但初学者可能需要花一些时间来学习Spring Boot的核心概念和最佳实践。
  • 依赖冲突:由于Spring Boot自动配置了许多依赖项,可能会导致依赖冲突或版本不兼容的问题,需要谨慎管理依赖项。
  • 35
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
### 回答1: Spring Boot 作为后端MySQL 作为数据库实现图片存储的代码示例如下: 1. 在 MySQL 中创建一个 BLOB 类型的字段来存储图片。 ``` CREATE TABLE images ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, data BLOB NOT NULL ); ``` 2. 在 Spring Boot 中配置数据源和 JPA。 ``` spring: datasource: url: jdbc:mysql://localhost:3306/your_database username: your_username password: your_password driver-class-name: com.mysql.jdbc.Driver jpa: hibernate: ddl-auto: update ``` 3. 创建一个实体类来映射数据库中的 images 表。 ``` @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Lob private byte[] data; // getters and setters } ``` 4. 创建一个 Repository 来操作数据库。 ``` @Repository public interface ImageRepository extends JpaRepository<Image, Long> { } ``` 5. 创建一个 Controller 来处理图片上传和下载。 ``` @RestController @RequestMapping("/images") public class ImageController { private final ImageRepository imageRepository; public ImageController(ImageRepository imageRepository) { this.imageRepository = imageRepository; } @PostMapping public Image uploadImage(@RequestParam("file") MultipartFile file) { Image image = new Image(); image.setName(file.getOriginalFilename()); image.setData(file.getBytes()); return imageRepository.save(image); } @GetMapping("/{id}") public ResponseEntity<byte[]> downloadImage(@PathVariable Long id) { Image image = imageRepository.findById(id).orElseThrow(() -> new NotFoundException()); return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image.getData()); } } ``` 以上代码是一个简单的示例,在实际应用中还需要考虑安全性、可扩 ### 回答2: 使用Spring Boot作为后端MySQL作为数据库实现图片的存储可以采用以下代码实现: 1. 创建一个实体类(Image)用于映射数据库表的字段: ```java @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Lob @Column(name = "image_data", nullable = false) private byte[] imageData; // 省略其他字段和对应的Getter/Setter方法 } ``` 2. 创建一个数据访问接口(ImageRepository)用于对数据库进行增删改查操作: ```java @Repository public interface ImageRepository extends JpaRepository<Image, Long> { } ``` 3. 创建一个服务类(ImageService)用于处理图片的存储和获取: ```java @Service public class ImageService { @Autowired private ImageRepository imageRepository; public Image storeImage(MultipartFile file) throws IOException { byte[] imageData = file.getBytes(); Image image = new Image(); image.setImageData(imageData); return imageRepository.save(image); } public Image getImageById(Long id) throws ResourceNotFoundException { return imageRepository.findById(id) .orElseThrow(() -> new ResourceNotFoundException("Image not found with id: " + id)); } } ``` 4. 创建一个控制器类(ImageController)用于处理图片存储和获取的请求: ```java @RestController @RequestMapping("/images") public class ImageController { @Autowired private ImageService imageService; @PostMapping("/upload") public Image uploadImage(@RequestParam("image") MultipartFile file) throws IOException { return imageService.storeImage(file); } @GetMapping("/{id}") public ResponseEntity<Resource> getImage(@PathVariable Long id) throws ResourceNotFoundException { Image image = imageService.getImageById(id); ByteArrayResource resource = new ByteArrayResource(image.getImageData()); return ResponseEntity.ok() .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + id + ".jpg\"") .body(resource); } } ``` 通过以上代码,我们可以实现将用户上传的图片保存到MySQL数据库中,并提供一个接口用于根据图片的id获取图片数据。请注意,以上代码为简化版,实际开发中可能需要考虑图片大小限制、文件类型验证等其他安全性和性能方面的问题。 ### 回答3: 下面是一个使用Spring BootMySQL实现图片存储的简单代码示例: 首先,确保你已经配置好了Spring BootMySQL的环境。 1. 创建一个名为`Image`的Java类,用于存储图片数据: ```java @Entity @Table(name = "images") public class Image { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Lob @Column(name = "data", columnDefinition = "MEDIUMBLOB") private byte[] data; // 其他属性和getter/setter方法... } ``` 2. 创建一个名为`ImageRepository`的接口,用于与数据库进行交互: ```java @Repository public interface ImageRepository extends JpaRepository<Image, Long> { } ``` 3. 创建一个名为`ImageController`的REST控制器,用于接收和处理来自前端的请求: ```java @RestController @RequestMapping("/images") public class ImageController { @Autowired private ImageRepository imageRepository; @PostMapping public Long uploadImage(@RequestParam("file") MultipartFile file) throws IOException { Image image = new Image(); image.setData(file.getBytes()); imageRepository.save(image); return image.getId(); } @GetMapping("/{id}") public ResponseEntity<byte[]> loadImage(@PathVariable Long id) { Optional<Image> imageOptional = imageRepository.findById(id); if (imageOptional.isPresent()) { Image image = imageOptional.get(); return ResponseEntity.ok().contentType(MediaType.IMAGE_JPEG).body(image.getData()); } else { return ResponseEntity.notFound().build(); } } } ``` 4. 在`application.properties`配置文件中,添加MySQL数据库连接信息: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 这样,当你向`/images`的POST请求上传图片时,会将图片数据保存到MySQL数据库中(使用`ImageRepository`),而当你向`/images/{id}`的GET请求获取图片时,会从数据库中取出图片数据并返回给前端。 请注意,这个代码示例中,直接将图片数据保存在数据库中可能不是最佳的选择,你也可以考虑将图片上传到文件系统或者云存储中,并在数据库中保存图片的路径。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序小勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值