spring-data-jpa实现增删改查以及分页操作方法

 更新时间:2018年02月10日 09:58:54   作者:Smos  
下面小编就为大家分享一篇spring-data-jpa实现增删改查以及分页操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

有几个坑一定要注意:

实现删除操作的时候一定要在各层类中 增加

@Transactional

注释,否则会一直报错

在自己使用@Query定义操作时,会碰到编译器报错,这个时候只需要禁用QL的语法检查即可

以下是部分代码:

//Repository

package com.example.myproject.dao;
import com.example.myproject.domain.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import javax.transaction.Transactional;
import java.util.List;
/**
 * Created by lenovo on 2017/4/19.
 */
@Transactional
public interface UserRepository extends JpaRepository<User,Long> {

  void deleteById(int id);
  void deleteByName(String name);
  void deleteBySex(String sex);
  void deleteByAge(int age);
  void removeByNameAndAge(String name, int age);
  @Modifying
  @Query(value = "update user u set u.name = :newName where u.name = :oldName",nativeQuery = true)
  void updateNameByName(@Param("oldName") String oldName, @Param("newName") String newName);
  List<User> findAll();
  Page<User> findAll(Pageable pageable);
  List<User> findByName(String name);
  List<User> findBySex(String sex);
  List<User> findByAge(int age);
  User findByNameAndSex(String name, String sex);
}

//Controller

package com.example.myproject.web; 
 
import com.example.myproject.dao.UserRepository; 
import com.example.myproject.domain.User; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.data.domain.Page; 
import org.springframework.data.domain.PageRequest; 
import org.springframework.data.domain.Pageable; 
import org.springframework.data.domain.Sort; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 
 
import javax.transaction.Transactional; 
import java.util.List; 
 
/** 
 * Created by lenovo on 2017/4/19. 
 */ 
@RestController 
@RequestMapping("/") 
@Transactional 
public class UserController { 
 @Autowired 
 private UserRepository userRepository; 
 
 @RequestMapping(value = "/userSave") 
 public String userSave(@RequestParam String name,@RequestParam String sex,@RequestParam int age) { 
  User user = new User(); 
  user.setName(name); 
  user.setAge(age); 
  user.setSex(sex); 
  userRepository.save(user); 
  return "true"; 
 } 
 
 @RequestMapping(value = "/deleteById") 
 public String deleteById(@RequestParam int id) { 
  userRepository.deleteById(id); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/deleteByName") 
 public String deleteByName(@RequestParam String name) { 
  userRepository.deleteByName(name); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/deleteBySex") 
 public String deleteBySex(@RequestParam String sex) { 
  userRepository.deleteBySex(sex); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/deleteByAge") 
 public String deleteByAge(@RequestParam int age) { 
  userRepository.deleteByAge(age); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/deleteByNameAndAge") 
 public String deleteByNameAndAge(@RequestParam String name, @RequestParam int age) { 
  userRepository.removeByNameAndAge(name,age); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/updateNameByName") 
 public String updateNameByName(@RequestParam String oldName, @RequestParam String newName) { 
  userRepository.updateNameByName(oldName,newName); 
  return "success"; 
 } 
 
 @RequestMapping(value = "/findall") 
 public List<User> findAll() { 
  List<User> l =userRepository.findAll(); 
  return l; 
 } 
 
 @RequestMapping(value = "/findallByPage") 
 public Page<User> findAllByPage() { 
  Sort sort = new Sort(Sort.Direction.ASC,"id"); 
  Pageable pageable = new PageRequest(2,6,sort); 
  Page<User> page = userRepository.findAll(pageable); 
  return page; 
 } 
 
 @RequestMapping(value = "/findByName") 
 public List<User> findByName(@RequestParam String name) { 
  List<User> list =userRepository.findByName(name); 
  return list; 
 } 
 
 @RequestMapping(value = "/findByAge") 
 public List<User> findByAge(@RequestParam int age) { 
  List<User> list =userRepository.findByAge(age); 
  return list; 
 } 
 
 @RequestMapping(value = "/findBySex") 
 public List<User> findBySex(@RequestParam String sex) { 
  List<User> list =userRepository.findBySex(sex); 
  return list; 
 } 
 
 @RequestMapping(value = "/findByNameAndSex") 
 public User findByNameAndSex(@RequestParam String name, @RequestParam String sex) { 
  User list =userRepository.findByNameAndSex(name,sex); 
  return list; 
 } 
} 

//User

package com.example.myproject.domain;
import javax.persistence.*;
/**
 * Created by lenovo on 2017/4/19.
 */
@Entity
public class User {
 @Id
 @GeneratedValue()
 private Integer id;
 @Column
 private String name;
 @Column
 private String sex;
 @Column
 private int age;
 public Integer getId() {
  return id;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSex() {
  return sex;
 }
 public void setSex(String sex) {
  this.sex = sex;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
}

以上这篇spring-data-jpa实现增删改查以及分页操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java编程生产者消费者实现的四种方法

    Java编程生产者消费者实现的四种方法

    Java生产者和消费者问题是线程安全模型中的经典问题:生产者和消费者在同一个时间段共用同一个存储空间,生产者向存储空间中添加产品呢,消费者取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞
    2021-10-10
  • Spring Boot 和 Spring 到底有啥区别你知道吗

    Spring Boot 和 Spring 到底有啥区别你知道吗

    Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。接下来通过本文给大家介绍Spring与Spring boot的区别介绍,非常不错,需要的朋友参考下吧
    2021-08-08
  • springboot实现极验校验的项目实践

    springboot实现极验校验的项目实践

    在系统业务中,需要想客户发送手机验证码,进行验证后,才能提交,本文主要介绍了springboot实现极验校验的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • 如何基于Jenkins构建Jmeter项目

    如何基于Jenkins构建Jmeter项目

    这篇文章主要介绍了如何基于Jenkins构建Jmeter项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • java中redissonClient 分布式锁的使用

    java中redissonClient 分布式锁的使用

    在集群的情况下,用户多次请求接口时,存入的内容可能会导致重复,这时候就可以使用分布式锁来限制,本文就来介绍一下java中redissonClient 分布式锁的使用,感兴趣的可以了解一下
    2024-03-03
  • Spring 整合 MyBatis的实现步骤

    Spring 整合 MyBatis的实现步骤

    SpringMVC 本来就是 Spring 框架的一部分,这两者无须再做整合,所以 SSM 整合的关键就是Spring对MyBatis的整合,三大框架整合完成后,将以 Spring 为核心,调用有关资源,高效运作,这篇文章主要介绍了 Spring 整合 MyBatis的实现步骤,需要的朋友可以参考下
    2023-02-02
  • Java实现高效PDF文件传输技巧

    Java实现高效PDF文件传输技巧

    你是否曾为PDF文件传输的低效率而苦恼?现在,有了这份Java实现高效PDF文件传输技巧指南,你将能够轻松解决这个问题,我们将分享一些实用的技巧和最佳实践,帮助你优化文件传输过程,不要错过这个提高工作效率的机会,快来阅读这份指南吧!
    2024-03-03
  • java jvm两种存储区的类型知识点讲解

    java jvm两种存储区的类型知识点讲解

    在本篇文章里小编给大家整理的是一篇关于java jvm两种存储区的类型知识点讲解内容,有兴趣的朋友们可以学习下。
    2021-03-03
  • 如何完成spring的最小化XML配置

    如何完成spring的最小化XML配置

    这篇文章主要介绍了如何完成spring的最小化XML配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
    2019-06-06
  • 解析Neatbeans(常见错误) build-impl.xml:305: Compile failed

    解析Neatbeans(常见错误) build-impl.xml:305: Compile failed

    本篇文章是对Neatbeans(常见错误) build-impl.xml:305: Compile failed的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-07-07

最新评论