只需两步!Eclipse+Maven快速构建第一个Spring Boot项目 构建了第一个Spring Boot项目。

Spring Boot连接MySQL数据库 连接了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映射元数据
JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中;
  • API
用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。
  • 查询语言
这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合。
 
Spirng Data Jpa是spring提供的一套简化JPA开发的框架,按照约定好的“方法命名规则”写Dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。
 
在学习的过程中,查询了许多资料,我觉得博客园的这篇总结的挺好:spring boot(五):spring data jpa的使用
下面正式开始CRUD:

增加(Create)

在UserController.java中添加方法:

    @RequestMapping("/addUser")
@ResponseBody
public User addUser(String userName, String PassWord) {
User user = new User();
user.setUserName(userName);
user.setPassWord(PassWord);
userRepository.save(user);
return user;
}

使用Postman访问http://localhost:8080//user/addUser?userName=Laplace&PassWord=math :

数据库里面增加了一条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")
List<User> getUser();

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

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

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

    public User(Long id, String userName, String passWord) {
super();
this.id = id;
this.userName = userName;
this.passWord = passWord;
}
userController.java 中的内容如下:
    @RequestMapping("/getUser")
public List<User> getUser() {
List<User> res = userRepository.getUser();
return res;
}
使用Postman访问http://localhost:8080//user/getUser :

这是数据库中的内容:

更新(Update)

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

Dao:

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

Controller:

    @RequestMapping("/updateUserNameById")
@Transactional
public String updateUserNameById(@RequestParam("name") String name, @RequestParam("id") Long id) {
userRepository.updateUserNameById(name, id);
return "更新成功";
}

使用Postman访问http://localhost:8080//user/updateUserNameById?name=AAAAAA&id=6 :

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

删除(Delete)

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

    @RequestMapping("/deleteUserById")
public String deleteUserById(@RequestParam("id") Long id) {
userRepository.deleteById(id);
return "删除成功";
}

使用Postman访问http://localhost:8080//user/deleteUserById?id=11

可以完成删除操作:

总结

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

Spring Boot使用Spring Data Jpa对MySQL数据库进行CRUD操作的更多相关文章

  1. 使用Spring Boot 和Spring Data JPA访问mysql数据库

    在Spring中使用JdbcTemplate是一种基本的数据访问方式,但是仍然需要较多的代码,为了解决这些大量枯燥的数据操作语句,我们可以使用ORM框架,比如:Hibernate,通过整合Hibern ...

  2. 使用Spring Data JPA 访问 Mysql 数据库-配置项

    jpa操作数据库 注意:数据库采用的是本机数据库,下面是建表语句及初始化数据: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------- ...

  3. Spring Boot 2.x 使用 jpa 连接 mysql

    在spring boot网站上生成一个项目,如图: 我使用的是Maven项目,java使用是jdk8(spring boot 2.x必须要jdk8及以上),dependencies分别输入选择 web ...

  4. Spring Boot入门(2)使用MySQL数据库

    介绍   本文将介绍如何在Spring项目中连接.处理MySQL数据库.   该项目使用Spring Data JPA和Hibernate来连接.处理MySQL数据库,当然,这仅仅是其中一种方式,你也 ...

  5. spring boot使用log4j2将日志写入mysql数据库

    log4j2官方例子在spring boot中报错而且还是用的是org.apache.commons.dbcp包 我给改了一下使用org.apache.commons.dbcp2包 1.log4j2. ...

  6. Spring Boot2 系列教程 (七) | 使用 Spring Data JPA 访问 Mysql

    前言 如题,今天介绍 Spring Data JPA 的使用. 什么是 Spring Data JPA 在介绍 Spring Data JPA 之前,首先介绍 Hibernate . Hibernat ...

  7. Spring Boot:在Spring Boot中使用Mysql和JPA

    本文向你展示如何在Spring Boot的Web应用中使用Mysq数据库,也充分展示Spring Boot的优势(尽可能少的代码和配置).数据访问层我们将使用Spring Data JPA和Hiber ...

  8. spring boot(五)Spring data jpa介绍

    在上篇文章springboot(二):web综合开发中简单介绍了一下spring data jpa的基础性使用,这篇文章将更加全面的介绍spring data jpa 常见用法以及注意事项 使用spr ...

  9. Spring Boot 整合Spring Data JPA

    Spring Boot整合Spring Data JPA 1)加入依赖 <dependency> <groupId>org.springframework.boot</g ...

随机推荐

  1. [ZLXOI2015]殉国 数论 扩展欧几里得

    题目大意:已知a,b,c,求满足ax+by=c (x>=0,y>=0)的(x+y)最大值与最小值与解的个数. 直接exgcd,求出x,y分别为最小正整数的解,然后一算就出来啦 #inclu ...

  2. BZOJ_3653_谈笑风生_树状数组

    BZOJ_3653_谈笑风生_树状数组 Description 设T 为一棵有根树,我们做如下的定义: ? 设a和b为T 中的两个不同节点.如果a是b的祖先,那么称“a比b不知道 高明到哪里去了”. ...

  3. Python Django 2.1登录功能_1

    #在上篇的基础上进行#在.../sign/templates/index.html文件,开发登录表单 <html> <head> <title>Django Pag ...

  4. ModBus功能码速记

    一.0x01~0x04: 这四个功能码都是"读"操作,可分两组记忆,0x01和0x02是一组(bool类型),0x03和0x04是一组(寄存器类型):两组属性差不多如下: 1.都是 ...

  5. Maven的安装步骤

    1.确保jdk安装成功,注意在系统环境下,必须添加jdk的路径.2.将maven的路径配置在系统环境变量中.3.修改maven的默认路径,即:将config下的settings.xml文件中的目录节点 ...

  6. ssh框架整合笔记

    1.建立普通的Javaweb项目,导入项目所必须的jar包. 2.配置web.xml文件. web.xml  3.在src下建立struts.xml. struts.xm 4.在实体包下配置  实体名 ...

  7. TiDB show processlist命令源码分析

    背景 因为丰巢自去年年底开始在推送平台上尝试了TiDB,最近又要将承接丰巢所有交易的支付平台切到TiDB上.我本人一直没有抽出时间对TiDB的源码进行学习,最近准备开始一系列的学习和分享.由于我本人没 ...

  8. 漏洞经验分享丨Java审计之XXE(下)

    上篇内容我们介绍了XXE的基础概念和审计函数的相关内容,今天我们将继续分享Blind XXE与OOB-XXE的知识点以及XXE防御方法,希望对大家的学习有所帮助! 上期回顾  ◀漏洞经验分享丨Java ...

  9. 【Python3爬虫】常见反爬虫措施及解决办法(三)

    上一篇博客的末尾说到全网代理IP的端口号是经过加密混淆的,而这一篇博客就将告诉你如何破解!如果觉得有用的话,不妨点个推荐哦~ 一.全网代理IP的JS混淆 首先进入全网代理IP,打开开发者工具,点击查看 ...

  10. 【原】javascript笔记之Array方法forEach&map&filter&some&every&reduce&reduceRight

    做前端有多年了,看过不少技术文章,学了新的技术,但更新迭代快的大前端,庞大的知识库,很多学过就忘记了,特别在项目紧急的条件下,哪怕心中隐隐约约有学过一个方法,但会下意识的使用旧的方法去解决,多年前ES ...