Spring Boot学习笔记(三)——使用JPA查询数据库返回需要的数据

1.概述
在上一篇中,我们已经学会了如何创建运行一个Spring Boot程序,但是他还远远满足不了一个网站的基本需求,完成这篇的学习后我们就能实现一个简单的雏形。
2.目标
在本篇中,实现的简单的数据库访问,读取数据的功能。
3.详细步骤
(1)在第二次的项目中的pom.xml文件加入Jpa以及你所使用的数据库所对应的依赖,Jpa是Spring Boot中映射数据库所需的依赖,我使用的是mysql数据库,所以导入mysql数据库依赖。

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

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

(2)配置application.properties文件,请结合自身的数据库填写这些配置项。

spring.datasource.url=***
spring.datasource.username=***
spring.datasource.password=***
spring.datasource.driver-class-name=***

这里采用的方式是通过内置的配置文档覆盖Spring Boot的自动配置。
(3)编写我们的实体类

@Entity
@Table
public class User {
    @Id
    private String Id;
    private String name;

    public User() {
    }

    public String getId() {
        return Id;
    }

    public void setId(String id) {
        Id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "Id='" + Id + '\'' +
                ", name='" + name + '\'' +
                '}';
    }
}

@Entity注解是用来申明此类是一个实体类,@Table注解表名了此类与数据库中表相对应,对此类进行操作就是对数据库的表进行操作
(4)编写dao/repository层
此层为对数据的基本处理层,用来编写直接对数据库进行操作的代码。
由于我们导入了JPA依赖,很多通常的查询,删除,更新等操作可以不用在此编写了,Spring Boot提供了一些接口。而且还可以在接口中声明函数名称就能达到想要的效果,无需去实现函数,这真的是太便利了不是吗ヾ(゚∀゚ゞ)

@Repository
public interface UserRepository extends JpaRepository<User,String> {
}

@Repository注解是告诉Spring Boot这是一个仓库类,会在启动的时候帮你自动注入。JpaRepository里面含有一般数据库操作所需要的接口,我们会在service层中调用他们。
(5)编写service层
service层主要用于处理逻辑,是业务逻辑层。在此处我们编写了一个接口和一个实现类。接口的设计是为了满足松耦合的需求。
接口UserService的代码:

public interface UserService {
    List<User> getAll();
}

实现类UserServiceImpl的代码:

@Service
public class UserServiceImpl implements UserService{

    @Autowired
    private UserRepository userRepository;

    @Override
    public List<User> getAll() {
        return userRepository.findAll();
    }
}

@Service注解表名其是一个服务类,服务启动时,Spring Boot会扫描到该类,并将其加入到容器中
@Autowired会自动将容器中的Bean注入其中。
(6)编写Control层
此层主要进行对页面的处理,包括跳转或者传参等等。

@Controller
public class UserControl {

    @Autowired
    private UserServiceImpl userService;

    @RequestMapping("/")
    public String toIndex(Model model){
        List<User> userList=userService.getAll();
        model.addAttribute("userList",userList);
        return "index";
    }
}

@Controller注解表明其为控制器类。
toIndex方法中多了一个Model参数,Model参数为页面传来的模型类,通过对模型类进行操作能够完成对页面进行传参。
(7)页面的编写
index.html页面代码如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8"/>
    <title>Title</title>
</head>
<body>
<ul>
    <li th:each="user : ${userList}">
        <span th:text="${user.name}"></span>
    </li>
</ul>
</body>
</html>

这个页面中的 ‘th:’表名使用thymeleaf引擎去解析,这样才能使静态页面动态化。想要了解更多的同学,可以自行百度thymeleaf的用法。
‘${*}’为Spring EL表达式,使用Spring EL表达式来获取后台传来的各种数据。
(8)项目启动后运行效果
数据库中的数据:
这里写图片描述

页面的展示效果:
这里写图片描述

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 Spring Boot 和 Vue.js 之间的数据交互,可以采用 RESTful API 的方式。具体实现步骤如下: 1. 在 Spring Boot 中,可以使用 Spring Data JPA 来访问数据库。首先需要在 pom.xml 文件中添加依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 在 application.properties 中配置数据库连接信息: ``` spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` 3. 创建一个实体类,使用 @Entity、@Table、@Id、@GeneratedValue 等注解来设置表名、字段名、主键等信息: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // 省略 getter 和 setter 方法 } ``` 4. 创建一个 Repository 接口,继承 JpaRepository 接口,并指定泛型参数为实体类和主键类型: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 5. 创建一个 Controller 类,使用 @RestController 注解标记该类,使用 @Autowired 注解注入 UserRepository,编写查询用户列表的接口: ```java @RestController @RequestMapping("/api") public class UserController { @Autowired private UserRepository userRepository; @GetMapping("/users") public List<User> getUsers() { return userRepository.findAll(); } } ``` 6. 在 Vue.js 中,可以使用 axios 库来发送 HTTP 请求。首先需要在 index.html 中引入 axios: ```html <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script> ``` 7. 创建一个 Vue 组件,在 mounted 钩子函数中使用 axios 发送 GET 请求获取用户列表,并将返回数据渲染到页面上: ```vue <template> <div> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> </tr> </thead> <tbody> <tr v-for="user in users" :key="user.id"> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.age }}</td> </tr> </tbody> </table> </div> </template> <script> export default { data() { return { users: [], }; }, mounted() { axios .get('/api/users') .then((response) => { this.users = response.data; }) .catch((error) => { console.log(error); }); }, }; </script> ``` 这样就可以通过 Spring Boot 和 Vue.js 实现查询数据库数据了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值