SpringBoot实战记录之数据访问

下面我就为你详细讲解“SpringBoot实战记录之数据访问”的完整攻略。

一、准备工作

在进行 SpringBoot 数据访问之前,首先需要进行一些准备工作。你需要确保项目中已经添加了以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
</dependency>

其中,spring-boot-starter-data-jpa 是 Spring Data JPA 的起步依赖,而 h2 则是一个内嵌式的 Java 数据库,可以用于测试和开发。

二、创建实体类

在进行数据访问之前,需要先定义数据模型。在本文中,我们创建一个 User 实体类。

@Entity // 实体类的注解
public class User {

    @Id // 表示当前字段是主键
    @GeneratedValue(strategy = GenerationType.AUTO) // 自动生成主键
    private Long id;

    @Column(nullable = false, unique = true) // 表示当前字段对应数据库的列
    private String username;

    @Column(nullable = false) // 表示当前字段对应数据库的列
    private String password;

    // 省略 getter 和 setter
}

这里用到了一些 JPA 的注解,@Entity 表示该类是一个实体类,@Id 表示当前字段是主键,@GeneratedValue 表示主键自动生成,@Column 表示当前字段对应数据库的列。

三、创建 DAO 接口

完成实体类定义之后,需要定义 DAO 接口,用于操作数据库。在本文中,我们定义一个 UserRepository 接口。

public interface UserRepository extends JpaRepository<User, Long> {

    User findByUsername(String username);
}

这里使用了 Spring Data JPA 提供的 JpaRepository 接口,该接口提供了对实体类的一些默认操作,比如增删改查等。UserRepository 接口继承了 JpaRepository 接口,并指定了实体类和主键类型。除此之外,UserRepository 接口还定义了一个 findByUsername 方法,用于根据用户名查询用户信息。

四、使用 DAO 接口操作数据

完成 DAO 接口定义之后,就可以使用该接口进行数据访问了。在本文中,我们使用 JUnit 进行单元测试,测试实际的数据访问代码。

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest {

    @Autowired // 自动装配 UserRepository
    private UserRepository userRepository;

    @Test
    public void testUserRepository() {
        // 测试插入数据
        User user1 = new User();
        user1.setUsername("admin");
        user1.setPassword("admin");
        userRepository.save(user1);

        // 测试查询数据
        User user2 = userRepository.findByUsername("admin");
        assertThat(user2.getPassword()).isEqualTo("admin");

        // 测试更新数据
        user2.setPassword("123456");
        userRepository.save(user2);
        User user3 = userRepository.findByUsername("admin");
        assertThat(user3.getPassword()).isEqualTo("123456");

        // 测试删除数据
        userRepository.delete(user3);
        User user4 = userRepository.findByUsername("admin");
        assertThat(user4).isNull();
    }

}

这里使用了 Spring Boot 自带的测试框架,首先通过 @Autowired 注解自动装配 UserRepository 接口,然后依次进行插入、查询、更新、删除等操作,并对操作的结果进行断言。

五、另一种数据源的配置方式

另外一种更常用的配置数据源的方式是,在 application.properties 文件中加入以下配置:

# DataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

其中,spring.datasource.urlspring.datasource.usernamespring.datasource.password 分别表示数据库的连接 URL、用户名和密码,而 spring.datasource.driver-class-name 则指定了数据库驱动的类名。配置好数据源之后,就可以使用 Spring Data JPA 进行数据库操作了。

以上就是本次“SpringBoot实战记录之数据访问”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot实战记录之数据访问 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • 基于Spring + Spring MVC + Mybatis 高性能web构建实例详解

    基于Spring + Spring MVC + Mybatis 高性能web构建实例详解 简介 Spring + Spring MVC + Mybatis是一种常用的Java Web开发框架组合,它们分别负责业务逻辑、Web层和数据访问层。本文将介绍如何使用这三个框架构建高性能的Web应用程序。 环境搭建 在开始之前,我们需要先搭建好开发环境。以下是环境搭建…

    Java 2023年5月17日
    00
  • java读取csv文件内容示例代码

    讲解”java读取csv文件内容示例代码”的攻略,大致分为以下三个步骤: 1.读取csv文件 我们先使用Java自带的 BufferedReader 和 FileReader 类,来打开并读取csv文件: import java.io.BufferedReader; import java.io.FileReader; import java.io.IOEx…

    Java 2023年5月31日
    00
  • java的Hibernate框架报错“TransientObjectException”的原因和解决方法

    当使用Hibernate框架时,可能会遇到“TransientObjectException”错误。这个错误通常是由于以下原因之一引起的: 持久化对象中包含了非持久化对象:如果您的持久化对象中包含了非持久化对象,则可能会出现此错误。在这种情况下,需要确保您的持久化对象中只包含持久化对象。 非持久化对象尝试与持久化对象建立关联:如果您的非持久化对象尝试与持久化…

    Java 2023年5月4日
    00
  • java多线程volatile内存语义解析

    Java多线程Volatile内存语义解析 什么是Volatile 在Java多线程中,Volatile是一种关键字,用来修饰变量,用于实现多线程之间的可见性和有序性。 当一个变量被声明为Volatile时,Java虚拟机保证每个线程修改了这个变量后,其他线程能够立即看到修改的结果,即保证了可见性。此外,Volatile还会影响指令和执行顺序,保证了有序性。…

    Java 2023年5月19日
    00
  • Java日期工具类操作字符串Date和LocalDate互转

    让我来详细讲解一下“Java日期工具类操作字符串Date和LocalDate互转”的攻略: 1. Date和LocalDate互转的原理 在Java中,Date和LocalDate是两种表示日期的方式,Date是旧版的日期工具类,而LocalDate是Java8之后新增的日期工具类。它们之间的区别主要在于精度和使用方式上。 Date表示的精度是毫秒级别的时间…

    Java 2023年5月20日
    00
  • 你应该知道的21个Java核心技术

    你应该知道的21个Java核心技术攻略 Java作为一门广泛应用于企业级系统开发的编程语言,核心技术对于开发人员非常重要。在这里,我们总结了21个Java核心技术,并提供了相应的攻略,供您参考。 1. Java基础语法 Java基础语法是Java编程的基础,掌握了这些知识,可以轻松地进入Java编程的世界。在学习Java基础语法时,我们应该注重掌握Java数…

    Java 2023年5月23日
    00
  • spring事务隔离级别、传播机制以及简单配置方式

    Spring事务管理 Spring提供了强大的事务管理服务,可以方便的实现事务控制,避免了在代码中写大量的底层JDBC事务代码。本篇文章将详细说明Spring事务的隔离级别、传播机制以及简单配置方式。 事务隔离级别 事务隔离级别是数据库保证数据一致性的重要手段,在并发访问数据库时可以防止不同线程对同一个数据产生相互影响的问题。Spring框架支持设置五个事务…

    Java 2023年5月20日
    00
  • Java对象传递与返回的细节问题详析

    关于Java对象的传递和返回,我们需要注意以下细节问题。 Java对象传递的细节问题 在Java中,我们可以将对象作为参数传递给方法,这种传递方式是引用传递。即方法得到的是对象的地址,我们通过地址来操作这个对象。在这个过程中,如果对象被修改了,那么原对象也会相应的被修改。 示例一: public class Student { String name; in…

    Java 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部