Spring Boot整合Spring data增删改查

秒速五厘米 2022-04-24 03:14 335阅读 0赞

版权声明:本文为博主原创文章,未经博主允许不得转载

1.pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-parent</artifactId>
  8. <version>2.1.3.RELEASE</version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.mr</groupId>
  12. <artifactId>spring-data</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <name>spring-data</name>
  15. <description>Demo project for Spring Boot</description>
  16. <properties>
  17. <java.version>1.8</java.version>
  18. </properties>
  19. <dependencies>
  20. <!--jpa-->
  21. <dependency>
  22. <groupId>org.springframework.boot</groupId>
  23. <artifactId>spring-boot-starter-data-jpa</artifactId>
  24. </dependency>
  25. <!--freemarler-->
  26. <dependency>
  27. <groupId>org.springframework.boot</groupId>
  28. <artifactId>spring-boot-starter-freemarker</artifactId>
  29. </dependency>
  30. <!--jdbc-->
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter-jdbc</artifactId>
  34. </dependency>
  35. <!--web-->
  36. <dependency>
  37. <groupId>org.springframework.boot</groupId>
  38. <artifactId>spring-boot-starter-web</artifactId>
  39. </dependency>
  40. <!--mysql-->
  41. <dependency>
  42. <groupId>mysql</groupId>
  43. <artifactId>mysql-connector-java</artifactId>
  44. <scope>runtime</scope>
  45. </dependency>
  46. <!--lombok-->
  47. <dependency>
  48. <groupId>org.projectlombok</groupId>
  49. <artifactId>lombok</artifactId>
  50. <optional>true</optional>
  51. </dependency>
  52. <dependency>
  53. <groupId>org.springframework.boot</groupId>
  54. <artifactId>spring-boot-starter-test</artifactId>
  55. <scope>test</scope>
  56. </dependency>
  57. <!--连接池 德鲁伊-->
  58. <dependency>
  59. <groupId>com.alibaba</groupId>
  60. <artifactId>druid-spring-boot-starter</artifactId>
  61. <version>1.1.10</version>
  62. </dependency>
  63. </dependencies>
  64. <build>
  65. <plugins>
  66. <plugin>
  67. <groupId>org.springframework.boot</groupId>
  68. <artifactId>spring-boot-maven-plugin</artifactId>
  69. </plugin>
  70. </plugins>
  71. </build>
  72. </project>
  73. ``

2.application.properties

  1. # 连接池类型
  2. spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  3. # 用户名
  4. spring.datasource.username=用户名
  5. # 密码
  6. spring.datasource.password=密码
  7. # 驱动
  8. spring.datasource.dbcp2.driver-class-name=com.mysql.jdbc.Driver
  9. # url
  10. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=GMT%2B8
  11. # jpa 配型 数据库类型
  12. spring.jpa.database=mysql
  13. # 运行时输出sql 语句
  14. spring.jpa.show-sql=true
  15. # 建表策略
  16. spring.jpa.hibernate.ddl-auto=update

3.Car.java

  1. package com.mr.model;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import javax.persistence.*;
  6. /**
  7. *
  8. */
  9. @Data
  10. @Entity
  11. @Table(name="t_car")
  12. @AllArgsConstructor
  13. @NoArgsConstructor
  14. public class Car {
  15. @Id
  16. @GeneratedValue(strategy= GenerationType.IDENTITY)
  17. private Integer carId;
  18. @Column(name="car_name")
  19. private String carName;
  20. @Column(name="car_price")
  21. private Integer carPrice;
  22. }

4.ICarService.java

  1. import com.mr.model.Car;
  2. /**
  3. *
  4. */
  5. public interface ICarService {
  6. /**
  7. * 新增
  8. * @param car
  9. */
  10. void save(Car car);
  11. /**
  12. * 查询
  13. * @return
  14. */
  15. Iterable<Car> list();
  16. /**
  17. * 删除
  18. * @param
  19. */
  20. void delete(Integer id);
  21. /**
  22. * 根据id查询一条数据(2.0后不能使用findOne了)
  23. * @param
  24. * @return
  25. */
  26. Car findCarById(Integer id);
  27. /**
  28. * 修改
  29. * @param car
  30. */
  31. void update(Car car);
  32. }`

5.CarServiceImpl.java

  1. import com.mr.dao.CarRepository;
  2. import com.mr.model.Car;
  3. import com.mr.service.ICarService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. import org.springframework.transaction.annotation.Transactional;
  7. /**
  8. *
  9. */
  10. @Service(value="carService")
  11. @Transactional(readOnly=true)
  12. public class CarServiceImpl implements ICarService {
  13. @Autowired
  14. private CarRepository carRepository;
  15. /**
  16. * 新增
  17. * @param
  18. */
  19. @Override
  20. @Transactional
  21. public void save(Car car) {
  22. carRepository.save(car);
  23. }
  24. /**
  25. * 查询
  26. * @return
  27. */
  28. @Override
  29. public Iterable<Car> list() {
  30. return carRepository.findAll();
  31. }
  32. /**
  33. * 删除
  34. * @param
  35. */
  36. @Override
  37. @Transactional
  38. public void delete(Integer id) {
  39. carRepository.deleteById(id);
  40. }
  41. //根据id查询一条数据(2.0后不能使用findOne了)
  42. @Override
  43. public Car findCarById(Integer id) {
  44. return carRepository.findById(id).get();
  45. }
  46. /**
  47. * 修改
  48. * @param
  49. */
  50. @Transactional
  51. @Override
  52. public void update(Car car) {
  53. carRepository.save(car);
  54. }
  55. }

6.CarController.java

  1. import com.mr.model.Car;
  2. import com.mr.service.ICarService;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.*;
  5. /**
  6. *
  7. */
  8. @RestController
  9. public class CarControler {
  10. @Autowired
  11. private ICarService carService;
  12. /**
  13. * 新增
  14. *
  15. */
  16. @RequestMapping("/car/save")
  17. @ResponseBody
  18. public String save(){
  19. Car car=new Car();
  20. car.setCarName("奥迪A8");
  21. car.setCarPrice(666666666);
  22. carService.save(car);
  23. return "新增成功";
  24. }
  25. /**
  26. * 查询
  27. *
  28. */
  29. @RequestMapping("/car/list")
  30. public Iterable<Car> list(){
  31. Iterable<Car> list=carService.list();
  32. return list;
  33. }
  34. /**
  35. * 删除
  36. */
  37. @RequestMapping("/car/deleteCarById/{id}")
  38. @ResponseBody
  39. public String deleteCarById(@PathVariable(name ="id", required = true) Integer id){
  40. carService.delete(id);
  41. return "删除成功";
  42. }
  43. //根据id查询一条数据(2.0后不能使用findOne了)
  44. @GetMapping(value = "/findCarById/{id}")
  45. public Car findCarById(@PathVariable(name ="id", required = true) Integer id){
  46. Car car=carService.findCarById(id);
  47. return car;
  48. }
  49. /**
  50. * 修改
  51. */
  52. @RequestMapping("/car/update/{id}")
  53. public String update(@PathVariable Integer id){
  54. Car car=new Car();
  55. car.setCarId(id);
  56. car.setCarName("兰博基尼");
  57. car.setCarPrice(888888888);
  58. carService.update(car);
  59. return "修改成功";
  60. }
  61. }

7.CarRepository.java

  1. import com.mr.model.Car;
  2. import org.springframework.data.repository.CrudRepository;
  3. /**
  4. * 继承CrudRepository<实体类,主键的类型>
  5. *
  6. public interface CarRepository extends CrudRepository<Car,Integer> {
  7. }

8.CrudRepository.class给提供的

  1. // Source code recreated from a .class file by IntelliJ IDEA
  2. // (powered by Fernflower decompiler)
  3. //
  4. package org.springframework.data.repository;
  5. import java.util.Optional;
  6. @NoRepositoryBean
  7. public interface CrudRepository<T, ID> extends Repository<T, ID> {
  8. <S extends T> S save(S var1);
  9. <S extends T> Iterable<S> saveAll(Iterable<S> var1);
  10. Optional<T> findById(ID var1);
  11. boolean existsById(ID var1);
  12. Iterable<T> findAll();
  13. Iterable<T> findAllById(Iterable<ID> var1);
  14. long count();
  15. void deleteById(ID var1);
  16. void delete(T var1);
  17. void deleteAll(Iterable<? extends T> var1);
  18. void deleteAll();
  19. }
  20. 注:CrudRepository为我们提供了一下方法:savesaveAllfindByIdexistsByIdfindAllfindAllByIddeleteByIddeletedeleteAll,因此简单的增删改查不需要在持久层写代码
  21. SpringData是一款持久层框架,和Hibernate使用类似。
  22. 具体使用查看官网:https://docs.spring.io/spring-data/jpa/docs/2.1.0.M3/reference/html/#repositories.custom-implementations

发表评论

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

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

相关阅读