当前位置 博文首页 > java_bird:Spring boot学习之spring-data-jpa的使用(一)

    java_bird:Spring boot学习之spring-data-jpa的使用(一)

    作者:[db:作者] 时间:2021-08-19 18:48

    Spring boot学习之jpa的使用

    之前我们是简单的入了门,创建一个helloword,而在实际的开发中仅仅入门是不够的,比如就少不了数据库的操作,本章将简单介绍一下基于hibernate的spring boot中jpa的使用。

    1.JPA简介

    要使用JPA首先得了解什么是JPA,其实本人在此之前对此也是有一些接触的,但是其究竟是个什么东东,也是不了解的,这次也是在网上各种度娘之后对其有了一个比较明确的理解。

    其实JPA本身并不是一种框架,是一种规范,其全称是Java Persistence API,是是Sun官方提出的Java持久化规范,而他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,并且其是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。

    而官网对spring data jpa是这么介绍的:Spring Data JPA是Spring Data系列的一部分,可以轻松实现基于JPA的存储库。该模块处理对基于JPA的数据访问层的增强的支持。这使得使用数据访问技术构建Spring供电的应用程序变得更加容易。

    Spring Data JPA旨在通过减少实际需要的数量来显着提高数据访问层的实现。作为开发人员,您编写存储库接口(包括自定义查找器方法),Spring将自动提供实现。
    特征
    基于Spring和JPA构建存储库的复杂支持
    支持Querydsl谓词,从而支持类型安全的JPA查询
    域类的透明审计
    分页支持,动态查询执行,整合自定义数据访问代码的能力
    @Query引导时间验证注释查询
    支持基于XML的实体映射

    package com.zxl.examples.controller;
    
    import com.zxl.examples.controller.common.ResultBean;
    import com.zxl.examples.controller.common.SuccessBean;
    import com.zxl.examples.entity.User;
    import com.zxl.examples.service.UserRepository;
    import com.zxl.examples.service.UserSerivceImpl;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Slice;
    import org.springframework.data.domain.Sort;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Administrator on 2017/7/24.
     */
    @RestController
    public class UserController {
    
        @Autowired
        UserRepository userRepository;
    
        @Autowired
        UserSerivceImpl userSerivce;
    
        @GetMapping("/users")
        public List
       
         findUserList(){
            return userRepository.findAll();
        }
    
        @PostMapping("/users/add")
        public User addUser(@RequestParam("username") String username,
                                  @RequestParam("name") String name,
                                  @RequestParam("password") String password){
            User user = new User();
            user.setUsername(username);
            user.setName(name);
            user.setPassword(password);
            return userRepository.save(user);
    
        }
    
        @GetMapping("/users/{id}")
        public User getUserById(@PathVariable Long id){
            return userRepository.findOne(id);
        }
    
        @PutMapping("/users/{id}")
        public User updUserById(@PathVariable Long id,@RequestParam("name") String name){
            User user = userRepository.findOne(id);//先查出来,否则修改的时候会将其他request中没有的参数也给覆盖掉
            user.setName(name);
            return userRepository.save(user);//与保存是同一个方法
        }
    
        @DeleteMapping("/users/{id}")
        public ResultBean delUserById(@PathVariable Long id){
            userRepository.delete(id);
            return new SuccessBean();
        }
    
        @GetMapping("/users/username/{username}")
        public List
        
          findByUsername(@PathVariable ("username") String username){
            return userRepository.findByUsername(username);
        }
    
        @PostMapping("/users/addMore")
        public void addMore(){
            userSerivce.addMoreUsers();
        }
    
        @PostMapping("/users/addList")
        public void addMoreList(){
            userSerivce.addMoreList();
        }
    
        
    }
    
        
       
    cs