Spring Boot入门(3)-数据库操作

avatar 2017年10月29日20:43:09 评论 302 views

本文介绍使用 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 是不是用起来很爽呢?赶快来试试吧

 

历史上的今天
十月
29
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: