springboot 整合mybatis 进行数据库操作(JPA)

客官°小女子只卖身不卖艺 2022-05-17 01:13 474阅读 0赞

上一篇——IntelliJ IDEA 搭建springboot

上一篇成功搭建springboot项目之后,我们来实现springboot 整合mybatis ,操作数据库。

首先创建一个ademo项目,我先把我的项目结构放在这里,进行解释

PersonController 是接受请求并使用对应方法来处理请求操作;

PersonRepository 这里使用了JPA接口,JPA封装了底层的数据库操作,PersonRepository使用JPA声明的方法就可以直接进行数据库操作;

Person 是实体类,这里进行数据类型声明,实现get(),set()方法,类名要与对应的数据库表名一致;

application.properties 是配置数据库连接,相对于spring,springboot会直接读取这里的配置连接数据库,但不适用于多数据源。

pom.xml 在这里添加依赖,导入对应jar包

70

在建立好项目后,我们先把对应的配置文件做好,这里我们直接在pom.xml文件中添加依赖,调用jar包

下面是要添加的依赖,只需添加没有的依赖就行,其他的不用更改

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-jdbc</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-web</artifactId>
  13. </dependency>
  14. <dependency>
  15. <groupId>mysql</groupId>
  16. <artifactId>mysql-connector-java</artifactId>
  17. <scope>runtime</scope>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-test</artifactId>
  22. <scope>test</scope>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-configuration-processor</artifactId>
  27. <optional>true</optional>
  28. </dependency>
  29. </dependencies>

数据库操作,第一步是先连接数据库,可以在application.properties中直接配置

注意:这里的localhost:3306是你的数据库连接,test是数据库名

  1. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test
  3. spring.datasource.username=root
  4. spring.datasource.password=root

第二步,建立Person实体类,这个类中的类名要在你的数据库中存在(不存在的话,springboot会逆向生成表),这里的id,name是表中的名称,要注意变量的类型与数据库名称类型一致;

另外,这里使用的@Entity 是声明映射Person这个实体类,@Id标注用于声明一个实体类的属性映射为数据库的主键列。,@GeneratedValue用于标注主键的生成策略 这里了解一下

注意:因为这里使用了@Id标签,所以进行数据添加操作时,不能随意创建记录

  1. package com.example.ademo.Person;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. import javax.persistence.Entity;
  5. import javax.persistence.GeneratedValue;
  6. import javax.persistence.Id;
  7. @Entity
  8. public class Person {
  9. @Id
  10. @GeneratedValue
  11. private int id;
  12. private int name;
  13. public Person(){
  14. }
  15. public Person(int id,int name){
  16. this.id = id;
  17. this.name = name;
  18. }
  19. public int getId() {
  20. return id;
  21. }
  22. public void setId(int id) {
  23. this.id = id;
  24. }
  25. public int getName() {
  26. return name;
  27. }
  28. public void setName(int name) {
  29. this.name = name;
  30. }
  31. }

第三步,我们既然连接到了数据库,又拿到了实体类,接下来我们就要进行数据库操作的声明了,直接继承JpaRepository接口,进行底层数据库操作

  1. package com.example.ademo.dao;
  2. import com.example.ademo.Person.Person;
  3. import org.springframework.data.jpa.repository.JpaRepository;
  4. public interface PersonRepository extends JpaRepository<Person,Integer> {
  5. }

第四步,数据库操作有了,那我们要使用对应的方法操作就不难了,

  1. package com.example.ademo.controller;
  2. import com.example.ademo.Person.Person;
  3. import com.example.ademo.dao.PersonRepository;
  4. import com.fasterxml.jackson.core.JsonProcessingException;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import org.hibernate.annotations.UpdateTimestamp;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.web.bind.annotation.*;
  9. import javax.servlet.http.HttpServletResponse;
  10. import java.io.IOException;
  11. import java.io.PrintWriter;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. @RestController
  16. public class PersonController {
  17. @Autowired
  18. private PersonRepository personRepository;
  19. //查看全部
  20. @RequestMapping(value="/hello",method = RequestMethod.GET)
  21. public void sau(HttpServletResponse response) throws IOException {
  22. List<Person> list = personRepository.findAll();
  23. Map<Integer,Integer> map = new HashMap<Integer,Integer>();
  24. for(Person p:list)
  25. map.put(p.getId(),p.getName());
  26. ObjectMapper json = new ObjectMapper();
  27. String ss = json.writeValueAsString(map);
  28. PrintWriter out = response.getWriter();
  29. out.print(ss);
  30. out.flush();
  31. out.close();
  32. }
  33. //添加一个
  34. @PostMapping(value = "/hello")
  35. public Person addPerson(@RequestParam("id") Integer id,@RequestParam("name") Integer name){
  36. Person person = new Person();
  37. person.setId(id);
  38. person.setName(name);
  39. return personRepository.save(person);
  40. }
  41. @GetMapping(value = "/hello/add")
  42. public Person addPerson1(@RequestParam("id") Integer id,@RequestParam("name") Integer name){
  43. Person person = new Person();
  44. person.setId(id);
  45. person.setName(name);
  46. return personRepository.save(person);
  47. }
  48. //修改一个
  49. @PutMapping(value = "/hello/{id}")
  50. public Person updatePerson(@PathVariable("id") Integer id,@RequestParam("name") Integer name){
  51. Person person = new Person();
  52. person.setId(id);
  53. person.setName(name);
  54. return personRepository.save(person);
  55. }
  56. @GetMapping(value = "/hello/upd")
  57. public Person updPerson(@RequestParam("id") Integer id,@RequestParam("name") int name){//@PathVariable("id") Integer id){
  58. Person person = findOne(id);
  59. person.setName(name);
  60. return personRepository.save(person);
  61. }
  62. //查找一个
  63. @GetMapping(value = "/hello/{id}")
  64. public Person findOne(@PathVariable("id") Integer id){
  65. return personRepository.findById(id).orElse(null);
  66. }
  67. //删除
  68. @GetMapping(value = "/hello/del/{id}")
  69. public void deletePerson(@PathVariable("id") Integer id){
  70. Person person = findOne(id);
  71. personRepository.delete(person);
  72. }
  73. }

这样我们的项目就算完成了,看一下效果吧。

查看全部数据

70 1

查看ID是2的数据

70 2

添加一个ID是3,的记录

70 3

把name改成99

70 4

删除id是2的数据

70 5

删除成功

70 6

输入网址是一个不好的操作,实现界面化才是我们的目标,

下一篇——将springboot-mybatis 的数据库操作界面化

发表评论

表情:
评论列表 (有 0 条评论,474人围观)

还没有评论,来说两句吧...

相关阅读