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