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日

相关文章

  • java多线程-读写锁原理

    下面就为您提供“Java多线程-读写锁原理”的完整攻略。希望对您有所帮助。 1. 读写锁简介 Java中的读写锁是一种特殊的锁,它对于多个线程的访问有着不同的限制。 一般情况下,读锁是共享锁,可以被多个线程共享;写锁是独占锁,只能被单个线程所持有。 在Java中,读写锁的实现是通过ReentrantReadWriteLock类来进行的。在该类中,提供了读锁和…

    Java 2023年5月19日
    00
  • 一文搞懂Java JDBC中的SQL注入问题

    一文搞懂Java JDBC中的SQL注入问题 什么是SQL注入? SQL注入是指攻击者利用客户端向服务器传递的SQL语句中的漏洞,注入恶意的查询语句或其他可执行的操作,从而获得非法的访问或者篡改数据的行为。SQL注入攻击是应用程序中最常见的攻击之一。 为什么要防止SQL注入? SQL注入攻击会使应用程序不按照设计来执行SQL语句,因而破坏了应用程序的安全性。…

    Java 2023年6月16日
    00
  • Java对象深复制与浅复制实例详解

    Java对象深复制与浅复制实例详解 在 Java 中,对象的复制分为浅复制和深复制两种方式。本文将详细讲解 Java 中对象复制的概念、浅复制和深复制的实现方式、以及深浅复制的应用场景。 对象复制的概念 在 Java 中,我们可以通过 new 运算符来生成新的对象实例,但是有时候我们需要创建一个新对象,它的属性和原对象一模一样而且它们内存地址不同,这个时候就…

    Java 2023年5月26日
    00
  • JSP实现登录功能之添加验证码

    JSP实现登录功能之添加验证码的完整攻略可以分为以下几步: 1. 引入验证码依赖库 首先需要引入验证码相关的依赖库,常用的验证码依赖库有Kaptcha和Google的ReCaptcha。 以Kaptcha为例,需要在项目的pom.xml文件中添加以下依赖: <dependency> <groupId>com.github.penggl…

    Java 2023年6月15日
    00
  • Java基础之常用的命令行指令

    Java基础之常用的命令行指令 在使用Java开发中,经常需要在命令行中执行一些操作,例如编译、运行Java程序等。下面是常用的命令行指令及其作用。 javac javac是Java编译器,可以将Java源代码编译成Java字节码文件(.class文件)。使用方法如下: javac HelloWorld.java 上述指令将会编译HelloWorld.jav…

    Java 2023年5月19日
    00
  • Java深入理解代码块的使用细节

    Java 深入理解代码块的使用细节 代码块的定义 代码块是指被一对大括号包含起来的代码段,其中包括了定义变量、方法、循环、分支等语句。 Java中的代码块可以分为以下两种: 实例代码块 实例代码块是定义在类中的非静态代码块,可以用于初始化实例变量。实例代码块会在构造方法执行前执行。 实例代码块的示例代码如下: public class Demo { priv…

    Java 2023年5月20日
    00
  • JSP实现计算器功能(网页版)

    下面我将为您详细讲解“JSP实现计算器功能(网页版)”的完整攻略。 概述 计算器是一种非常常见的工具,JSP可以通过表单和后端计算来实现网页版的计算器。本文将介绍如何使用JSP技术来实现一个简单的网页版计算器。 实现步骤 1. 创建JSP文件 首先,我们需要创建一个JSP文件,用于接收用户的输入,并进行计算。在JSP文件中,我们可以使用HTML标记和JSP指…

    Java 2023年6月15日
    00
  • Spring的初始化和XML解析的实现

    下面我就来详细讲解一下Spring的初始化和XML解析的实现攻略。 Spring的初始化 Spring的初始化可以分为两步: 加载配置文件 实例化对象 加载配置文件 在Spring初始化的过程中,首先会加载XML配置文件并创建IoC容器。Spring的XML配置文件默认命名为applicationContext.xml,当然也可以自定义文件名。 Spring…

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