這章很簡(jiǎn)單,充分利用JPA帶給我們的便利進(jìn)行數(shù)據(jù)操作滤奈。
新建Teacher類(lèi)以及它的Dao接口:
重啟一下項(xiàng)目就可以完成表的建立
增
首先介紹新增功能,新建一個(gè)TeacherController卓箫,注入TeacherDao泻骤,然后用Jrebal啟動(dòng)項(xiàng)目(Jrebal啟動(dòng)方便熱更新)
@RestController
public class TeacherController {
@Autowired
private TeacherDao teacherDao;
}
然后編寫(xiě)我們的測(cè)試方法
@RequestMapping("/addTeacherTest")
public Teacher addTeacherTest(){
Teacher teacher = new Teacher();
teacher.setBirthday(new Date());
teacher.setName("jules");
teacher.setSubject("math");
teacherDao.save(teacher);
return teacher;
}
新建一個(gè)Teacher,調(diào)用TeacherDao為我們實(shí)現(xiàn)的save方法(當(dāng)主鍵不是空的時(shí)候围肥,會(huì)被認(rèn)為更新罩扇,所以沒(méi)有update方法)婆芦。如果保存成功怕磨,teacher會(huì)被綁定主鍵id。編譯一下工程消约,在瀏覽器輸入http://127.0.0.1:8080/addTeacherTest肠鲫,可以看到teacher類(lèi)已經(jīng)存在id:
同樣的,數(shù)據(jù)庫(kù)中也有了這樣一條數(shù)據(jù):
回顧一下或粮,我們幾乎沒(méi)有寫(xiě)一行非業(yè)務(wù)代碼导饲,但是spring-data-jpa帶給我們的遍歷遠(yuǎn)遠(yuǎn)不止于此。
刪
刪除操作也同樣簡(jiǎn)單氯材,比如我們要?jiǎng)h除剛才id=1的數(shù)據(jù)渣锦,只要編寫(xiě)代碼:
@RequestMapping("/deleteTeacherTest")
public void deleteTeacherTest(){
Teacher teacher = new Teacher();
teacher.setId(1L);
teacherDao.delete(teacher);
}
或者更簡(jiǎn)單的
@RequestMapping("/deleteTeacherTest")
public void deleteTeacherTest(){
teacherDao.delete(1L);
}
就可以了。
改
修改也很簡(jiǎn)單氢哮,比如我們需要修改id=1的teacher的姓名袋毙,編寫(xiě)代碼:
@RequestMapping("/updateTeacherTest")
public Teacher updateTeacherTest() {
Teacher teacher = new Teacher();
teacher.setId(1L);
teacher.setName("jack");
teacherDao.save(teacher);
return teacher;
}```
我們剛說(shuō)過(guò)它沒(méi)有update方法,當(dāng)指定了id冗尤,就會(huì)被當(dāng)成update操作(批量听盖?后面會(huì)有別的方法)
#查
寫(xiě)到這里,這章真的是太簡(jiǎn)單了裂七,但是查有點(diǎn)不一樣皆看,查詢(xún)條件我們需要一個(gè)“例子”,比如我要查詢(xún)姓名是“jules”的老師,那我就要new一個(gè)jules背零,然后把他的name賦值成"name",然后再轉(zhuǎn)化為spring-data-jpa需要的模板類(lèi)(如果用主鍵作為條件腰吟,不需要“例子”,jpa提供了findOne方法)。
我們發(fā)現(xiàn)teacherDao帶了許多find開(kāi)頭的方法
![image.png](http://upload-images.jianshu.io/upload_images/2650891-6908b377f49739ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
很多根據(jù)參數(shù)能猜出一二捉兴,這里我們需要借助Example類(lèi)來(lái)按照條件查詢(xún)數(shù)據(jù)蝎困,代碼如下:
@RequestMapping("/selectTeacherTest")
public List selectTeacherTest() {
Teacher teacher = new Teacher();
teacher.setName("jules");
List teachers = teacherDao.findAll(Example.of(teacher));
return teachers;
}
在瀏覽器輸入對(duì)應(yīng)的url就能得到我們需要的結(jié)果:
![image.png](http://upload-images.jianshu.io/upload_images/2650891-a23c859b52dbc899.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#總結(jié)
spring-data-jpa已經(jīng)實(shí)現(xiàn)了很多查詢(xún)方法,基本滿足我們70%左右的需求倍啥,但是這并不是萬(wàn)能的禾乘。下一章介紹其他的查詢(xún)方法。
***