一、必要的前言
通过上一篇我们了解了一下SpringDataJpa的基本使用,这一篇我们来讲解一下基本的增删改查,毕竟CURD操作是每个持久层框架必不可少的。
其实SpringDataJpa的增加我们上一篇中已经讲到了,这里就不做累述了,其他的其实与新增类似,已经为我们封装好了如何使用。
本片教程继续使用上一篇中写好的小Dome
二、先修改一下数据库
在数据库中增加两行内容,方面我们后续的CURD操作
三、CURD之修改
修改操作我上一篇教程中提到过,usersJpaDao.save()
方法兼具修改能力,我们来试一下。
1.修改启动类----添加一个修改接口
@SpringBootApplication
@RestController
public class SpringdatajpaApplication {
@Autowired
private UsersJpaDao usersJpaDao;
public static void main(String[] args) {
SpringApplication.run(SpringdatajpaApplication.class, args);
}
/**
* 新增
* @param userName
* @param userPwd
* @return
*/
@GetMapping("/insertUser")
public Users insertUser(@RequestParam("userName")String userName,@RequestParam("userPwd")String userPwd){
Users users=new Users();
users.setUserName(userName);
users.setUserPwd(userPwd);
return this.usersJpaDao.save(users);
}
/**
* 修改
* @param userId
* @param userName
* @param userPwd
* @return
*/
@GetMapping("/updateUser")
public Users updateUser(@RequestParam("userId")Integer userId,@RequestParam("userName")String userName,@RequestParam("userPwd")String userPwd){
Users users=new Users();
users.setUserName(userName);
users.setUserPwd(userPwd);
users.setUserId(userId);
return this.usersJpaDao.save(users);
}
}
记住该接口中的对象需要添加一个主键,用于标明修改哪一条数据
2.测试
启动项目,待启动完成后浏览器输入
http://localhost:8080/updateUser?userName=zhaoliu&userPwd=666666&userId=1
出现如上图返回信息后查看数据库
这里张三就改成赵六了。
3.小结
修改和新增都是共用一个方法即可完成,还有很多其他操作,比如
saveAll()
插入或修改一组数据其他的大家可以自己去查看API文档即可!
四、CURD—删除
删除操作也有很多封装好的方法,包括按主键删除、删除全部、删除一组数据等,我们就以主键删除为例,其他雷同。
1.修改启动类----添加一个删除接口
@SpringBootApplication
@RestController
public class SpringdatajpaApplication {
@Autowired
private UsersJpaDao usersJpaDao;
public static void main(String[] args) {
SpringApplication.run(SpringdatajpaApplication.class, args);
}
/**
* 新增
* @param userName
* @param userPwd
* @return
*/
@GetMapping("/insertUser")
public Users insertUser(@RequestParam("userName")String userName,@RequestParam("userPwd")String userPwd){
Users users=new Users();
users.setUserName(userName);
users.setUserPwd(userPwd);
return this.usersJpaDao.save(users);
}
/**
* 修改
* @param userId
* @param userName
* @param userPwd
* @return
*/
@GetMapping("/updateUser")
public Users updateUser(@RequestParam("userId")Integer userId,@RequestParam("userName")String userName,@RequestParam("userPwd")String userPwd){
Users users=new Users();
users.setUserName(userName);
users.setUserPwd(userPwd);
users.setUserId(userId);
return this.usersJpaDao.save(users);
}
/**
* 删除
* @param userId
* @return
*/
@GetMapping("/deleteUser")
public String deleteUser(@RequestParam("userId")Integer userId){
this.usersJpaDao.deleteById(userId);
return "删除成功";
}
}
值得一提的是个方法没有返回值,固需要使用其他手段判断是否删除成功,或者可以自定义一个删除方法,后续教程中会进行说明。
这里有一地方指定注意 :usersJpaDao.deleteById() 方法看上去好像是以id字段删除,容易让人感觉成 where id=#{id} ,实则不然,这里指的是按照主键删除,任何字段名称都可以。还有,这里的主键类型通过源码可以看到,是根据你接口中定义的类型而决定的。
下面两张图为源码中类型的选定:
下图为你创建继承jpaRepository时输入的类型
2.测试
启动项目,浏览器输入:
http://localhost:8080/deleteUser?userId=3
查看数据即可发现删除成功
我们的王五就这么没了!
五、小结
大家估计想问,查询呢???众所周知查询是CURD中最复杂的存在,所以我打算分几张来给大家讲解一下,目的就是为了让大家思路更加清晰,上手更快,还是那句话,如果有不懂的可以留言或者私聊哦。