JPA的一些记录(JAVA持久化API)

Posted Harris-H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA的一些记录(JAVA持久化API)相关的知识,希望对你有一定的参考价值。

JPA的一些记录(JAVA持久化API)

写一个仓库类接口,继承JpaRepository

public interface UserRepository extends JpaRepository<User, Long> {
}

写一个接口

public interface UserService {
    public List<User> getUserList();
    public User findUserById(Long id);
    public void save(User user);
    public void edit(User user);
    public void delete(Long id);
}

写接口对应的实现类,用(自动注入)仓库类的方法直接调用。

package com.harris.serviceimpl;

import com.harris.entity.User;
import com.harris.repository.UserRepository;
import com.harris.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service //声明类为服务实现类
public class UserServiceImp implements UserService {
    @Autowired // 自动注入(不需要自己new对象)
    private UserRepository userRepository;
    @Override
    public List<User> getUserList() {
        return userRepository.findAll(); //直接调用Repository内置的CURD方法
    }
    @Override
    public User findUserById(Long id) {
        return userRepository.findById(id).get(); //直接调用Repository内置的CURD方法
//findById(id)返回的是Optional类(一个可以为null的容器对象)
//如果Optional容器中存在对象,则调用get()方法返回该对象
    }
    @Override
    public void save(User user) {
        userRepository.save(user); //直接调用Repository内置的CURD方法
    }
    @Override
    public void edit(User user) { //保存修改的对象
        userRepository.save(user); //直接调用Repository内置的CURD方法
    }
    @Override
    public void delete(Long id) {
        userRepository.deleteById(id); //直接调用Repository内置的CURD方法
    }
}

在这里插入图片描述

手动添加一些数据

在这里插入图片描述


Controller层

@RestController
public class UserController {
    @Autowired
    UserRepository userRepository;
    @RequestMapping("/get/{id}")
    public User getUserById(@PathVariable Long id) {
        User user = userRepository.findById(id).get();
        return user;
    }
    @RequestMapping("/list")
    public List<User> list() {
        List<User> users = userRepository.findAll();
        return users;
    }
}

使用Postman测试

  • get接口测试

在这里插入图片描述

  • list接口测试

在这里插入图片描述


修改Controller层

@Controller
public class UserController {
    @Autowired
    UserRepository userRepository;
    @RequestMapping("/")
    public String index() {
        return "redirect:/list";  //请求转发到 /list
    }
    @RequestMapping("/list")
    public String list(Model model) {
        List<User> users=userRepository.findAll();
        model.addAttribute("users", users);
        return "user/list";
    }
    @RequestMapping(value = "/delete/{id}")
    public String delete(@PathVariable Long id) {
        userRepository.deleteById(id);
        return "redirect:/list";
    }
}

以上是关于JPA的一些记录(JAVA持久化API)的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot数据库交互之Spring Data JPA

java框架JPA -- JPA基础

JPA规范及其它持久层框架

SpringBoot与JPA

JPA简介

java中用jpa往数据库表中添加数据怎么实现?