Springboot03整合SpringDataJPA访问MySQL数据库

使用SpringBoot访问MySQL数据库,并且结合SpringDataJPA完成CRUD(Create,Read,Update,Delete

结合 Springboot01 中的demo案例 Springboot01创建第一个程序

1 添加 pom.xml 依赖

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

 

 

2  配制数据源 


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/spring-test
spring.datasource.username=root
spring.datasource.password=123456
#com.mysql.jdbc.Driver
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
##是hibernate的配置属性,其主要作用是:自动创建、更新、验证数据库表结构
#create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
#create-drop:每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
#update:最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
#validate:每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
spring.jpa.properties.hibernate.hbm2ddl.auto=update

 

3 创建 UserController 


import com.springboot.demo.pojo.UserModel;
import com.springboot.demo.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(value = "/users")
public class UserController {


    @Autowired
    private UserRepository userRepository;


    /**
     * 查询所有的用户
     * @return
     */
    @RequestMapping(value = "/list",method = RequestMethod.GET)
    public List<UserModel> getAllUserList(){
        return userRepository.findAll();
    }

    /**
     * 添加新用户
     * 更新 这里主键为 id 如果数据参数中有对应的id 则为更新
     * @param userModel
     * @return
     */
    @RequestMapping(value = "/add",method = RequestMethod.POST)
    public UserModel addUser(UserModel userModel){
        return userRepository.save(userModel);
    }

    /**
     * 删除用户
     * @param id
     * @return
     */
    @RequestMapping(value = "/delete",method = RequestMethod.POST)
    public  List<UserModel>  deleteUser(Long id){
         userRepository.deleteById(id);
        return userRepository.findAll();
    }
}

4 创建 对应的 JPA

import com.springboot.demo.pojo.UserModel;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;

import java.io.Serializable;


/**
 * JpaRepository接口(SpringDataJPA提供的简单数据操作接口)
 * JpaSpecificationExecutor(SpringDataJPA提供的复杂查询接口)
 * Serializable(序列化接口)。
 */
public interface UserRepository extends JpaRepository<UserModel,Long> , JpaSpecificationExecutor<UserModel>, Serializable {
}

5 对应的映射实体 UserModel 



import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

@Entity
@Table(name = "t_user")
public class UserModel implements Serializable {

    @Id
    @GeneratedValue
    @Column(name = "u_id")
    private Long id;

    @Column(name = "u_name")
    @NotNull(message = "姓名不可为空")
    private String name;


    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

6 启动程序测试 

测试添加 

测试查询 

 

在这里,我们创建的 UserRepository继承了JpaRepository接口内有又继承了PagingAndSortingRepository接口以及QueryByExampleExecutor接口,而PagingAndSortingRepository接口内部又有一个继承自CrudRepository

CrudRepository接口 内包含了最简单的CRUD也就是Create、Read、Update、Delete方法,当然还有count、exists方法

PagingAndSortingRepository该接口继承自CrudRepository接口,包含了最基本的CRUD方法的实现,该接口内部添加了两个方法,设计了分页和排序功能

QueryByExampleExecutor  该接口提供条件查询,复杂查询方法,可以通过Example方式进行查询数据

我们创建的 UserRepository继承了JpaRepository接口,也就是说我们的UserRepository拥有了JpaRepository接口及父类接口的所有方法实现,所以我们并不需要添加任何数据操作代码就可以完成数据操作,JpaRepository接口对条件查询以及保存集合数据添加了对应的方法。

早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页