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日

相关文章

  • 纯JSP实现的简单登录示例

    下面是“纯JSP实现的简单登录示例”的完整攻略: 1. 准备工作 首先需要创建一个简单的web应用程序。在该程序的根目录下创建一个名为“login.jsp”的文件,用于用户登录。 2. 页面设计 下面来设计程序的页面。在login.jsp文件中,创建一个表单以便用户输入用户名和密码: <form name="loginform" m…

    Java 2023年6月15日
    00
  • Spring中如何获取request的方法汇总及其线程安全性分析

    获取request对象在Spring应用程序中是一种常见的需求。下面是Spring中获取request的方法的总结及其线程安全性分析: 1.通过@ControllerAdvice注解的类获取request对象 @ControllerAdvice public class MyControllerAdvice { /** * 获取HttpServletRequ…

    Java 2023年5月20日
    00
  • 关于spring5的那些事:@Indexed 解密

    下面是关于 “关于 Spring5 的那些事: @Indexed 解密” 的完整攻略: 标题 1. @Indexed 的作用是什么 Spring数据可访问性框架(spring-data)提供了一个注解@Indexed,用于标记一个实体类(Entity)中的属性,使其被包含在全文搜索索引(Full Text Search Index)中。在使用Elastics…

    Java 2023年5月31日
    00
  • Java面向对象基础知识之委托和lambda

    Java面向对象基础知识之委托和lambda分别是两个重要的概念。 委托 委托(Delegation)是指一种对象间的关系,其中一个对象(即委托方)通过将其任务交给另一个对象(即受托方)来完成某些行为。在Java中,委托通常使用接口来实现。 示例1:使用委托模式实现餐厅点餐系统 假设你作为一个开发者,要开发一个餐厅点餐系统,其中一个功能是打印出点餐清单。你可…

    Java 2023年5月31日
    00
  • JSON各种转换问题(json转List,json转对象等)

    让我为你详细讲解一下“JSON各种转换问题(json转List,json转对象等)”的完整攻略。 JSON转List 假设有一个JSON数组如下: [ { "name": "张三", "age": 23 }, { "name": "李四", "age…

    Java 2023年5月26日
    00
  • 史上最全的java随机数生成算法分享

    史上最全的Java随机数生成算法分享 介绍 在Java编程中,我们经常需要使用随机数来模拟真实情况、生成测试数据、加密等等场景。本文将介绍Java中常用的随机数生成算法,包括伪随机数生成器和真随机数生成器,并提供代码示例方便学习和使用。 伪随机数生成器 伪随机数生成器生成的随机数是伪随机的,也就是说它们的分布不是完全随机的,但它们通常可以满足人们的需求。 M…

    Java 2023年5月19日
    00
  • Spring Boot 如何正确读取配置文件属性

    Spring Boot 通过@ConfigurationProperties注解实现了属性注入功能,可以方便的读取配置文件中的属性值。下面将详细讲解如何正确读取配置文件属性的完整攻略。 1. 定义@ConfigurationProperties类 首先,我们需要在Spring Boot应用程序中定义一个带有@ConfigurationProperties注解…

    Java 2023年5月26日
    00
  • bootstrap table 多选框分页保留示例代码

    如果想要在bootstrap table中加入多选框并且保留在分页时的选定状态,可以按照以下步骤进行操作: 首先要在table的html代码中加入一个input元素作为多选框,示例代码如下: “` 姓名 性别 年龄 城市 张三 男 28 北京 李四 女 25 上海 王五 男 30 广州 “` 其中,第一个th元素中的input元素作为全选多选框,后面的每…

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