微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作

 构建了第一个Spring Boot项目。

 连接了MysqL数据库

本文在之前的基础上,使用Spring Data Jpa对MysqL数据库进行CRUD——增加(Create)、查询(Retrieve)、更新(Update)和删除(Delete) 操作。

Spring Data Jpa

JPA是什么?看看百度怎么说。JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体到数据库中。
JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致。总的来说,JPA包括以下3方面的技术:
  • ORM映射元数据
  • API
用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
  • 查询语言
 
Spirng Data Jpa是spring提供的一套简化JPA开发的框架,按照约定好的“方法命名规则”写Dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。
 
在学习的过程中,查询了许多资料,我觉得博客园的这篇总结的挺好:
下面正式开始CRUD:

增加(Create)

在UserController.java中添加方法:

@RequestMapping("/addUser"=

使用Postman访问 :

数据库里面增加了一条id为5,username为Laplace,password为math的记录:

为了方便查询,再利用相同的操作插入一些数据。

查询(Retrieve)

上一篇已经完成了简单的findAll和findByUserName。这里进行一些自定义查询操作。

Spring data 大部分的sql都可以根据方法名定义的方式来实现,也支持自己写sql语句来查询

sql查询方法上面使用@Query注解,如涉及到删除修改在需要加上@Modifying.也可以根据需要添加 @Transactional 对事物的支持

例如查询id大于等于6的记录,sql语句:SELECT * FROM USER t WHERE t.id >= 6,这条语句在Navicat中新建查询中运行是没有问题的,添加到Dao中却是有问题的,会抛出异常:

 java.lang.IllegalArgumentException: Validation Failed for query for method public abstract java.util.List

在Dao中添加

@Query("SELECT * FROM USER t WHERE t.id >= 6" getUser();

这是由于Jpa无法自动完成查询结果到自定义实体的映射。需要改成下面这个样子的,写实体类的路径,From后面加的不是表的名字,而是对应的实体类的名字

@Query("SELECT new com.example.demo.domain.User(t.id,t.userName,t.passWord) FROM User t WHERE t.id >= 6" getUser();

还需要在实体类User.java中间添加对应的构造方法(与上面sql语句中的保持一致),才能够返回实体类的对象的:

.id =.userName =.passWord =
userController.java 中的内容如下:
@RequestMapping("/getUser" List res =
使用Postman访问 :

这是数据库中的内容:

更新(Update)

更新可以使用save方法;这里使用自定义SQL语句进行更新,试用一下@Modifying注解。

Dao:

"UPDATE User u SET u.userName = ?1 WHERE u.id = ?2" updateUserNameById(String userName,Long id);

Controller:

@RequestMapping("/updateUserNameById" String updateUserNameById(@RequestParam("name") String name,@RequestParam("id" "更新成功"

使用Postman访问 : 

可以看到数据库发生了改变:

删除(Delete) 

根据id删除记录,直接在Controller中添加

@RequestMapping("/deleteUserById" String deleteUserById(@RequestParam("id" "删除成功"

使用Postman访问nofollow" target="_blank">http://localhost:8080//user/deleteUserById?id=11: 

可以完成删除操作:

总结

本文使用Spring Boot JPA进行数据操作,不难发现,使用JPA可以大量减少Dao层代码,提升开发效率。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐