spring-data-jpa實(shí)現(xiàn)增刪改查以及分頁(yè)操作方法
有幾個(gè)坑一定要注意:
實(shí)現(xiàn)刪除操作的時(shí)候一定要在各層類(lèi)中 增加
@Transactional
注釋?zhuān)駝t會(huì)一直報(bào)錯(cuò)
在自己使用@Query定義操作時(shí),會(huì)碰到編譯器報(bào)錯(cuò),這個(gè)時(shí)候只需要禁用QL的語(yǔ)法檢查即可
以下是部分代碼:
//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實(shí)現(xiàn)增刪改查以及分頁(yè)操作方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)戰(zhàn)在線選課系統(tǒng)的實(shí)現(xiàn)流程
讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實(shí)現(xiàn)一個(gè)在線選課系統(tǒng),大家可以在過(guò)程中查缺補(bǔ)漏,提升水平2021-11-11
Mybatis plus的自動(dòng)填充與樂(lè)觀鎖的實(shí)例詳解(springboot)
這篇文章主要介紹了Mybatis plus的自動(dòng)填充與樂(lè)觀鎖的實(shí)例詳解(springboot),本文給大家介紹的非常詳細(xì)對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(24)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07
Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件 FTP遠(yuǎn)程文件管理模塊實(shí)現(xiàn)(10)
這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單FTP軟件,F(xiàn)TP遠(yuǎn)程文件管理模塊的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04
詳解在Spring中如何自動(dòng)創(chuàng)建代理
這篇文章主要介紹了詳解在Spring中如何自動(dòng)創(chuàng)建代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07
java實(shí)現(xiàn)簡(jiǎn)單登錄界面的實(shí)戰(zhàn)過(guò)程
學(xué)習(xí)JAVA的過(guò)程當(dāng)中,登陸界面是多數(shù)人第一個(gè)實(shí)現(xiàn)的小程序,下面這篇文章主要給大家介紹了關(guān)于利用java實(shí)現(xiàn)簡(jiǎn)單登錄界面的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05

