本文介绍使用 jpa 对数据库进行增删改查。

一、导入依赖

我们使用 mysql 数据库,使用 jpa 规范操作

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-jpa</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>mysql</groupId>
  7. <artifactId>mysql-connector-java</artifactId>
  8. </dependency>

使用 Maven 管理依赖,添加以上两个后,重新 install Maven,然后 Reimport

二、Spring-Data-Jpa 介绍和 RESTful API 设计

1、JPA 介绍

2、RESTful API 设计

请求类型 请求路径 功能
GET /users 查询用户列表
POST /users 添加一个用户
GET /users/id 根据id查询用户
PUT /users/id 根据id修改用户
DELETE /users/id 根据id删除用户

三、具体代码

1、实体类 User

  1. package com.liuyanzhao.blog;
  2. import javax.persistence.Entity;
  3. import javax.persistence.GeneratedValue;
  4. import javax.persistence.Id;
  5. @Entity
  6. public class User {
  7. @Id
  8. @GeneratedValue
  9. private Integer id;
  10. private String name;
  11. private String gender;
  12. private Integer age;
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. public String getName() {
  20. return name;
  21. }
  22. public void setName(String name) {
  23. this.name = name;
  24. }
  25. public String getGender() {
  26. return gender;
  27. }
  28. public void setGender(String gender) {
  29. this.gender = gender;
  30. }
  31. public Integer getAge() {
  32. return age;
  33. }
  34. public void setAge(Integer age) {
  35. this.age = age;
  36. }
  37. }

注意:每个属性对应数据表中的一个字段(不需要建表),

其中主键的需要加 @Id 和@GeneratedValue 两个注解

实体类前需要加 @Entity

请确保导入的类没有导错。

2、UserController.java

  1. package com.liuyanzhao.blog;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.web.bind.annotation.*;
  4. import java.util.List;
  5. /**
  6. * @Author 言曌
  7. * @DATE 2017/10/29 上午10:33
  8. * @URL http://liuyanzhao.com
  9. */
  10. @RestController
  11. public class UserController {
  12. @Autowired
  13. private UserRepository userRepository;
  14. /**
  15. * 查询所有用户列表
  16. * @return
  17. */
  18. @GetMapping(value = "/users")
  19. public List<User> listUser() {
  20. return userRepository.findAll();
  21. }
  22. /**
  23. * 添加一个用户
  24. * @param name
  25. * @param gender
  26. * @param age
  27. * @return
  28. */
  29. @PostMapping(value = "/users")
  30. public User insertUser(@RequestParam("name") String name,
  31. @RequestParam("gender") String gender,
  32. @RequestParam("age") Integer age) {
  33. User user = new User();
  34. user.setName(name);
  35. user.setGender(gender);
  36. user.setAge(age);
  37. return  userRepository.save(user);
  38. }
  39. /**
  40. * 查询一个用户
  41. * @param id
  42. * @return
  43. */
  44. @GetMapping(value = "/users/{id}")
  45. public User getUser(@PathVariable("id") Integer id) {
  46. return userRepository.findOne(id);
  47. }
  48. /**
  49. * 更新一个用户
  50. * @param id
  51. * @param name
  52. * @param gender
  53. * @param age
  54. * @return
  55. */
  56. @PutMapping(value = "/users/{id}")
  57. public User updateUser(@PathVariable("id") Integer id,
  58. @RequestParam("name") String name,
  59. @RequestParam("gender") String gender,
  60. @RequestParam("age") Integer age) {
  61. User user = new User();
  62. user.setId(id);
  63. user.setName(name);
  64. user.setGender(gender);
  65. user.setAge(age);
  66. return userRepository.save(user);
  67. }
  68. /**
  69. * 删除一个用户
  70. * @param id
  71. */
  72. @DeleteMapping(value = "/users/{id}")
  73. public void deleteUser(@PathVariable("id") Integer id) {
  74. userRepository.delete(id);
  75. }
  76. /**
  77. * 根据用户性别查询用户列表
  78. * @param gender
  79. * @return
  80. */
  81. @GetMapping(value = "/users/gender/{gender}")
  82. public List<User> listUserByGender(@PathVariable("gender") String gender) {
  83. return userRepository.findByGender(gender);
  84. }
  85. }

3、UserRepository.java

  1. package com.liuyanzhao.blog;
  2. import org.springframework.data.jpa.repository.JpaRepository;
  3. import java.util.List;
  4. /**
  5. * @Author 言曌
  6. * @DATE 2017/10/29 上午10:35
  7. * @URL http://liuyanzhao.com
  8. */
  9. public interface UserRepository  extends JpaRepository<User,Integer>{//表名和Id类型
  10. //根据性别来查询用户
  11. public List<User> findByGender(String gender);
  12. }

注意:如果我们想添加其他的方法,可以在 UserRepository里写抽象方法,但是命名规范一定要注意。

4、application.yml

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.jdbc.Driver
  4. url: jdbc:mysql://localhost:3306/springboot
  5. username: root
  6. password: 123456
  7. jpa:
  8. hibernate:
  9. ddl-auto: update
  10. show-sql: true

四、使用Postman工具测试

我们可以使用 Postman 根据来发起 HTTP 请求,就不需要自己写表单验证了。

比如 添加一个用户

获得用户列表

删除一个用户

最后,发现 JPA 是不是用起来很爽呢?赶快来试试吧

Spring Boot入门(3)-数据库操作相关推荐

  1. Spring Boot实战:数据库操作

    From: https://www.cnblogs.com/paddix/p/8178943.html 上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用 ...

  2. Spring Boot 入门与实战笔记

    **一.**Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 20 ...

  3. Spring Boot 入门之缓存和 NoSQL 篇(四)

    原文地址:Spring Boot 入门之缓存和 NoSQL 篇(四) 博客地址:http://www.extlight.com 一.前言 当系统的访问量增大时,相应的数据库的性能就逐渐下降.但是,大多 ...

  4. Spring boot入门(三):集成AdminLTE(Freemarker),结合generate代码生成器,利用DataTable和PageHelper分页...

    Spring boot入门(三):SpringBoot集成结合AdminLTE(Freemarker),利用generate自动生成代码,利用DataTable和PageHelper进行分页显示 标题 ...

  5. Spring Boot –无法确定数据库类型NONE的嵌入式数据库驱动程序类

    If you are reading this, then I think you have got "Cannot determine embedded database driver c ...

  6. 动力节点郭鑫Spring Boot入门学习笔记,收藏起来慢慢看

    做 Java 开发的,没有人敢小觑 Spring Boot 的重要性,现在出去面试,无论多小的公司 or 项目,都要跟你扯一扯 Spring Boot,扯一扯微服务,如果啃不下来,很可能就与大厂失之交 ...

  7. Spring Boot 入门笔记

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  8. 史上最全,Spring Boot入门篇总结,收藏起来慢慢看

    Spring Boot是Spring家族下的一个全新开发框架,其设计目的主要是用来简化Spring应用的创建及开发过程,它提供了自动配置,starter依赖等特性,从而使开发人员从大量的XML配置中解 ...

  9. Spring Boot 入门

    一.Spring Boot 入门 1.Spring Boot 简介 简化Spring应用开发的一个框架: 整个Spring技术栈的一个大整合: J2EE开发的一站式解决方案: 2.微服务 2014,m ...

  10. Spring Boot入门(9)网页版计算器

    介绍   在写了前八篇Spring Boot项目的介绍文章后,我们已经初步熟悉了利用Spring Boot来做Web应用和数据库的使用方法了,但是这些仅仅是官方介绍的一个例子而已.   本次分享将介绍 ...

最新文章

  1. 如何用python实现邮箱发送信息
  2. python函数几个return语句_Python常用函数--return 语句-阿里云开发者社区
  3. 读书笔记:锋利的JQuery
  4. php.ini 安全配置
  5. 字符串转换到double数组
  6. 如何使用Xilisoft Video Editor将多个视频文件合并到一个文件中?
  7. aspose.words .net 导出word表
  8. 图解大数据 | 基于Spark RDD的大数据处理分析
  9. python爬取百度街景图像
  10. iOS二维码限制区域识别、扫描动画
  11. revit二次开发之数据库的使用
  12. 神州优车黄强元:上云之路“一波三折”,为何最终选择阿里云?
  13. 国网铅封电表红外通讯采集器是干什么用的?一分钟搞懂
  14. c语言词典课程设计报告,英汉电子词典C语言课程设计
  15. 手动绘制logistic回归预测模型校准曲线(Calibration curve)(1)
  16. 【小月电子】ALTERA FPGA开发板系统学习教程-LESSON12 IPCORE核之FIFO详细教程
  17. ACT游戏开发记录之地图打包工具
  18. 广州大学大学物理第十一章 真空中的静电场
  19. 港科夜闻丨世界年轻大学排名公布,香港科大蝉联榜首
  20. 建行聚合支付及支付宝二维码开发经验(C语言2)

热门文章

  1. 06 - JavaSE之常用类
  2. [JavaScript]20个优秀的Javascript导航技术
  3. windows 8 Skydrive
  4. 【自然框架】稳定版的Demo —— 三:主从表的维护方式
  5. 禁止屏幕保护使用密码
  6. 在大多数人转向.NET和JAVA阵营的时候,我正在悄悄地向古老的COBOL招手
  7. 【MySQL】外键踩坑集
  8. 【SpringBoot】整合MyBatis
  9. git 查看修改明细_Git(查看修改记录)
  10. 使用cl编译器,将记事本写的c文件编译成dll和exe 步骤如下(记事本保存成.c)