spring-data-jpa实现增删改查以及分页操作方法
有几个坑一定要注意:
实现删除操作的时候一定要在各层类中增加
@Transactional
注释,否则会一直报错
在自己使用@Query定义操作时,会碰到编译器报错,这个时候只需要禁用QL的语法检查即可
//Repository
packagecom.example.myproject.dao; importcom.example.myproject.domain.User; importorg.springframework.data.domain.Page; importorg.springframework.data.domain.Pageable; importorg.springframework.data.jpa.repository.JpaRepository; importorg.springframework.data.jpa.repository.Modifying; importorg.springframework.data.jpa.repository.Query; importorg.springframework.data.repository.query.Param; importjavax.transaction.Transactional; importjava.util.List; /** *Createdbylenovoon2017/4/19. */ @Transactional publicinterfaceUserRepositoryextendsJpaRepository{ voiddeleteById(intid); voiddeleteByName(Stringname); voiddeleteBySex(Stringsex); voiddeleteByAge(intage); voidremoveByNameAndAge(Stringname,intage); @Modifying @Query(value="updateuserusetu.name=:newNamewhereu.name=:oldName",nativeQuery=true) voidupdateNameByName(@Param("oldName")StringoldName,@Param("newName")StringnewName); List findAll(); Page findAll(Pageablepageable); List findByName(Stringname); List findBySex(Stringsex); List findByAge(intage); UserfindByNameAndSex(Stringname,Stringsex); }
//Controller
packagecom.example.myproject.web; importcom.example.myproject.dao.UserRepository; importcom.example.myproject.domain.User; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.data.domain.Page; importorg.springframework.data.domain.PageRequest; importorg.springframework.data.domain.Pageable; importorg.springframework.data.domain.Sort; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestParam; importorg.springframework.web.bind.annotation.RestController; importjavax.transaction.Transactional; importjava.util.List; /** *Createdbylenovoon2017/4/19. */ @RestController @RequestMapping("/") @Transactional publicclassUserController{ @Autowired privateUserRepositoryuserRepository; @RequestMapping(value="/userSave") publicStringuserSave(@RequestParamStringname,@RequestParamStringsex,@RequestParamintage){ Useruser=newUser(); user.setName(name); user.setAge(age); user.setSex(sex); userRepository.save(user); return"true"; } @RequestMapping(value="/deleteById") publicStringdeleteById(@RequestParamintid){ userRepository.deleteById(id); return"success"; } @RequestMapping(value="/deleteByName") publicStringdeleteByName(@RequestParamStringname){ userRepository.deleteByName(name); return"success"; } @RequestMapping(value="/deleteBySex") publicStringdeleteBySex(@RequestParamStringsex){ userRepository.deleteBySex(sex); return"success"; } @RequestMapping(value="/deleteByAge") publicStringdeleteByAge(@RequestParamintage){ userRepository.deleteByAge(age); return"success"; } @RequestMapping(value="/deleteByNameAndAge") publicStringdeleteByNameAndAge(@RequestParamStringname,@RequestParamintage){ userRepository.removeByNameAndAge(name,age); return"success"; } @RequestMapping(value="/updateNameByName") publicStringupdateNameByName(@RequestParamStringoldName,@RequestParamStringnewName){ userRepository.updateNameByName(oldName,newName); return"success"; } @RequestMapping(value="/findall") publicListfindAll(){ List l=userRepository.findAll(); returnl; } @RequestMapping(value="/findallByPage") publicPage findAllByPage(){ Sortsort=newSort(Sort.Direction.ASC,"id"); Pageablepageable=newPageRequest(2,6,sort); Page page=userRepository.findAll(pageable); returnpage; } @RequestMapping(value="/findByName") publicList findByName(@RequestParamStringname){ List list=userRepository.findByName(name); returnlist; } @RequestMapping(value="/findByAge") publicList findByAge(@RequestParamintage){ List list=userRepository.findByAge(age); returnlist; } @RequestMapping(value="/findBySex") publicList findBySex(@RequestParamStringsex){ List list=userRepository.findBySex(sex); returnlist; } @RequestMapping(value="/findByNameAndSex") publicUserfindByNameAndSex(@RequestParamStringname,@RequestParamStringsex){ Userlist=userRepository.findByNameAndSex(name,sex); returnlist; } }
//User
packagecom.example.myproject.domain; importjavax.persistence.*; /** *Createdbylenovoon2017/4/19. */ @Entity publicclassUser{ @Id @GeneratedValue() privateIntegerid; @Column privateStringname; @Column privateStringsex; @Column privateintage; publicIntegergetId(){ returnid; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetSex(){ returnsex; } publicvoidsetSex(Stringsex){ this.sex=sex; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } }
以上这篇spring-data-jpa实现增删改查以及分页操作方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。