spring data使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37681914/article/details/80211879

介绍

由Spring提供的一个用于简化JPA开发的框架
Spring Data JPA能干什么
可以极大的简化JPA的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。
Spring Data JPA有什么
主要来看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念:
1. Repository:最顶层的接口,是一个空的接口,目的是为了统一所有Repository的类型,且能让组件扫描的时候自动识别。
2. CrudRepository :是Repository的子接口,提供CRUD的功能
3. PagingAndSortingRepository:是CrudRepository的子接口,添加分页和排序的功能
4. JpaRepository:是PagingAndSortingRepository的子接口,增加了一些实用的功能,比如:批量操作等。
5. JpaSpecificationExecutor:用来做负责查询的接口
6. Specification:是Spring Data JPA提供的一个查询规范,要做复杂的查询,只需围绕这个规范来设置查询条件即可

example

环境

jdk1.8 + maven3.2 + (idea 或者 eclipse)

项目目录结构:

这里写图片描述

创建数据库:

CREATE DATABASE study;

maven配置

<?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>

    <groupId>com.fly.study</groupId>
    <artifactId>spring_data</artifactId>
    <version>1.0-SNAPSHOT</version>

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


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- JPA Data (We are going to use Repositories, Entities, Hibernate, etc...) -->

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

        <!-- Use MySQL Connector-J -->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

spring配置文件:

resources下的application.yml文件

spring:
    datasource:
        url: jdbc:mysql://localhost:3306/study
        username: root
        password: 123456
    jpa:
        hibernate:
            ddl-auto: create

User代码:

package com.fly.study.model;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * @author weijun.zou
 * Create on 2018/5/6
 */
@Entity
@ToString
public class User {
    @Getter
    @Setter
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Getter
    @Setter
    private String name;

    @Getter
    @Setter
    private String email;
}

dao层代码:

package com.fly.study.dao;

import com.fly.study.model.User;
import org.springframework.data.repository.CrudRepository;

/**
 * @author weijun.zou
 * Create on 2018/5/6
 */

public interface UserRepository extends CrudRepository<User, Long> {

}

main方法:

package com.fly.study;


import com.fly.study.dao.UserRepository;
import com.fly.study.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.Arrays;

/**
 * @author weijun.zou
 * Create on 2018/5/6
 */
@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private UserRepository userRepository;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) {
        //保存用户
        User user = new User();
        user.setEmail("[email protected]");
        user.setName("moon");
        user = userRepository.save(user);
        System.out.println("保存user:" + user);
        //查询用户
        user = userRepository.findById(user.getId()).orElse(new User());
        System.out.println("查询user:" + user);
        //删除用户
        System.out.println("删除用户" + user.getId());
        userRepository.deleteById(user.getId());
        //判断用户是否存在
        boolean exists = userRepository.existsById(user.getId());
        System.out.println("存在user:" + exists);
        //保存多个用户
        User u1 = new User();
        User u2 = new User();
        u1.setName("u1");
        u1.setEmail("[email protected]");
        u2.setName("u2");
        u2.setEmail("[email protected]");
        Iterable<User> saveAllUsers = userRepository.saveAll(Arrays.asList(u1, u2));
        System.out.println("保存users:" + saveAllUsers);
        //计数
        long count = userRepository.count();
        System.out.println("数量user:" + count);
        //删除所有
        System.out.println("删除所有用户");
        userRepository.deleteAll();
        //查询所有
        Iterable<User> allUsers = userRepository.findAll();
        System.out.println("所有user:" + allUsers);
    }
}

猜你喜欢

转载自blog.csdn.net/m0_37681914/article/details/80211879