Spring boot整合Spring data增删改查

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

1.pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.1.3.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </parent>
   <groupId>com.mr</groupId>
   <artifactId>spring-data</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <name>spring-data</name>
   <description>Demo project for Spring Boot</description>

   <properties>
      <java.version>1.8</java.version>
   </properties>

   <dependencies>
      <!--jpa-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-data-jpa</artifactId>
      </dependency>
      <!--freemarler-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-freemarker</artifactId>
      </dependency>
      <!--jdbc-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-jdbc</artifactId>
      </dependency>
      <!--web-->
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
      <!--mysql-->
      <dependency>
         <groupId>mysql</groupId>
         <artifactId>mysql-connector-java</artifactId>
         <scope>runtime</scope>
      </dependency>
      <!--lombok-->
      <dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <optional>true</optional>
      </dependency>
      <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
      </dependency>
      <!--连接池 德鲁伊-->
      <dependency>
         <groupId>com.alibaba</groupId>
         <artifactId>druid-spring-boot-starter</artifactId>
         <version>1.1.10</version>
      </dependency>
   </dependencies>
   <build>
      <plugins>
         <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
         </plugin>
      </plugins>
   </build>

</project>
``

2.application.properties

# 连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 用户名
spring.datasource.username=用户名
# 密码
spring.datasource.password=密码
# 驱动
spring.datasource.dbcp2.driver-class-name=com.mysql.jdbc.Driver
# url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/数据库名?serverTimezone=GMT%2B8

# jpa 配型  数据库类型
spring.jpa.database=mysql
# 运行时输出sql 语句
spring.jpa.show-sql=true
# 建表策略
spring.jpa.hibernate.ddl-auto=update

3.Car.java

package com.mr.model;




import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;

/**
 * 
 */

@Data
@Entity
@Table(name="t_car")
@AllArgsConstructor
@NoArgsConstructor
public class Car {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer carId;
    @Column(name="car_name")
    private String carName;
    @Column(name="car_price")
    private Integer carPrice;
}

4.ICarService.java


import com.mr.model.Car;

/**
 *
 */
public interface ICarService {
    /**
     * 新增
     * @param car
     */
    void save(Car car);

    /**
     * 查询
     * @return
     */
    Iterable<Car> list();

    /**
     * 删除
     * @param
     */
    void delete(Integer id);

    /**
     *  根据id查询一条数据(2.0后不能使用findOne了)
     * @param
     * @return
     */
    Car findCarById(Integer id);

    /**
     * 修改
     * @param car
     */
    void update(Car car);
}`

5.CarServiceImpl.java


import com.mr.dao.CarRepository;
import com.mr.model.Car;
import com.mr.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;



/**
 * 
 */
@Service(value="carService")
@Transactional(readOnly=true)
public class CarServiceImpl implements ICarService {

    @Autowired
    private CarRepository carRepository;
    /**
     * 新增
     * @param
     */
    @Override
    @Transactional
    public void save(Car car) {
        carRepository.save(car);
    }

    /**
     * 查询
     * @return
     */
    @Override
    public Iterable<Car> list() {
        return carRepository.findAll();
    }

    /**
     * 删除
     * @param
     */
    @Override
    @Transactional

    public void delete(Integer id) {
        carRepository.deleteById(id);
    }
    //根据id查询一条数据(2.0后不能使用findOne了)
    @Override
    public Car  findCarById(Integer id) {
        return carRepository.findById(id).get();
    }

    /**
     * 修改
     * @param
     */
    @Transactional
    @Override
    public void update(Car car) {
        carRepository.save(car);
    }

}

6.CarController.java


import com.mr.model.Car;
import com.mr.service.ICarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 *
 */
@RestController
public class CarControler {
    @Autowired
    private ICarService carService;

    /**
     * 新增
     *
     */
    @RequestMapping("/car/save")
    @ResponseBody
    public String save(){
        Car car=new Car();
        car.setCarName("奥迪A8");
        car.setCarPrice(666666666);
        carService.save(car);
        return "新增成功";
    }
    /**
     * 查询
     *
     */
    @RequestMapping("/car/list")
    public Iterable<Car> list(){
        Iterable<Car> list=carService.list();
        return list;

    }

    /**
     * 删除
     */
    @RequestMapping("/car/deleteCarById/{id}")
    @ResponseBody
    public String  deleteCarById(@PathVariable(name ="id", required = true) Integer  id){
        carService.delete(id);
        return "删除成功";
    }

    //根据id查询一条数据(2.0后不能使用findOne了)
    @GetMapping(value = "/findCarById/{id}")
    public Car findCarById(@PathVariable(name ="id", required = true) Integer id){
        Car car=carService.findCarById(id);
        return car;

    }
    /**
     * 修改
     */
    @RequestMapping("/car/update/{id}")
    public String update(@PathVariable Integer id){
        Car car=new Car();
        car.setCarId(id);
        car.setCarName("兰博基尼");
        car.setCarPrice(888888888);

        carService.update(car);
        return "修改成功";
    }
}

7.CarRepository.java


import com.mr.model.Car;
import org.springframework.data.repository.CrudRepository;


/**
 * 继承CrudRepository<实体类,主键的类型>
 *
public interface CarRepository extends CrudRepository<Car,Integer> {

}

8.CrudRepository.class给提供的

// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package org.springframework.data.repository;

import java.util.Optional;

@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    Optional<T> findById(ID var1);

    boolean existsById(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> var1);

    long count();

    void deleteById(ID var1);

    void delete(T var1);

    void deleteAll(Iterable<? extends T> var1);

    void deleteAll();
}

注:CrudRepository为我们提供了一下方法:save,saveAll,findById,existsById,findAll,findAllById,deleteById,delete,deleteAll,因此简单的增删改查不需要在持久层写代码
SpringData是一款持久层框架,和Hibernate使用类似。
具体使用查看官网:https://docs.spring.io/spring-data/jpa/docs/2.1.0.M3/reference/html/#repositories.custom-implementations


猜你喜欢

转载自blog.csdn.net/weixin_44914784/article/details/89298945