基于springboot和spring-boot-starter-data-jpa快速操作mysql数据库

1、创建springboot项目

2、pom.xml文件

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.9</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.maker</groupId>
    <artifactId>mysql-jpa</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>mysql-jpa</name>
    <description>mysql-jpa</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <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.mysql</groupId>
            <artifactId>mysql-connector-j</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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3、项目结构

4、application.properties

java 复制代码
spring.application.name=mysql-jpa
# 服务器访问端口
server.port=8080
# 数据库基本配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/jpa-demo?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.jpa.database=MYSQL
# 显示后台处理的SQL语句
spring.jpa.show-sql=true
# 格式化 SQL 查询以便阅读
spring.jpa.properties.hibernate.format_sql=true
# 显示 SQL 参数绑定
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql=TRACE
# 显示 Hibernate 统计信息
logging.level.org.hibernate.stat=DEBUG
logging.level.org.hibernate=INFO
# 自动检查实体和数据库表是否一致,如果不一致则会进行更新数据库表
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

5、创建entity层

java 复制代码
package com.maker.entity;

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

import java.io.Serializable;

@Entity
@Data
@Table(name="user_info")
public class UserInfo implements Serializable {

    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;

    private String username;

    private String password;
}

6、创建service层

java 复制代码
package com.maker.service;

import com.maker.entity.UserInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserInfoRepository extends JpaRepository<UserInfo, Long> {

    @Query(("SELECT u FROM UserInfo u WHERE u.username = :username"))
    UserInfo findByName(@Param("username") String username);



}

7、创建impl层

java 复制代码
package com.maker.service.impl;

import com.maker.entity.UserInfo;
import com.maker.service.UserInfoRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserInfoRepository userInfoRepository;

    public UserInfo saveUser(UserInfo user) {
        return userInfoRepository.save(user);
    }
}

8、创建controller层

java 复制代码
package com.maker.controller;

import ch.qos.logback.core.joran.spi.HttpUtil;
import com.maker.entity.UserInfo;
import com.maker.service.UserInfoRepository;
import com.maker.service.impl.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api")
public class UserInfoController {

    @Autowired
    private UserInfoRepository userInfoRepository;

    @Autowired
    private UserService userService;


    @GetMapping(value = "/list")
    public List<UserInfo> getUserList(){
        return userInfoRepository.findAll();
    }

    @RequestMapping(value = "/findByName/{username}",method = RequestMethod.GET)
    public UserInfo findByName(@PathVariable String username){
//        String username="Java之音";
        return userInfoRepository.findByName(username);
    }


    @RequestMapping(value = "/saveUser",method = RequestMethod.POST)
    @ResponseBody
    public UserInfo saveUser(@RequestBody UserInfo userInfo){
//        userInfo = new UserInfo();
//        userInfo.setUsername("测试");
//        userInfo.setPassword("123456");

        return userService.saveUser(userInfo);
    }
}

9、用apifox测试

相关推荐
Zan30 分钟前
SQLite + SQLx 实战:为什么已经发布的数据库迁移文件,绝对不能再修改?
数据库·后端·面试
这个DBA有点耶1 小时前
数据同步的三个工程底线:DDL同步、断点续传、一致性校验——开源CDC的边界与KFS的路径
数据库·dba·代码规范
aiks_yuan2 小时前
MySQL GROUP BY 很慢怎么优化:加了索引反而从 1 秒变 7 秒,Using temporary 该不该消(MySQL 8.2 实测 400 万行)
mysql
SelectDB2 小时前
列式存储为什么适合分析类负载?原理、限制与日志场景应用
数据库
数据库小学妹3 小时前
MySQL大字段治理:行溢出机制、覆盖索引与拆表
数据库·mysql·性能优化
爱吃奥利奥_wen3 小时前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
这个DBA有点耶4 小时前
MySQL 8.0不可见索引:删索引怕出事,不删又拖慢写入——中间态怎么用?
数据库·mysql·代码规范
测试界的小码农6 小时前
【图数据库实战进阶(01):从零认识 Neo4j,搭建第一个图数据库项目】
数据库·neo4j
软件技术NINI6 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设