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
还没有评论,来说两句吧...