spring data jpa 使用之 spring boot 2.x

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 准备本人写的spring data是通过maven子父工程管理parent项目的 : pom.xmlpom.xml spring-boot-data com.

准备

本人写的spring data是通过maven子父工程管理
parent项目的 : pom.xml

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">
    <parent>
        <artifactId>spring-boot-data</artifactId>
        <groupId>com.ronnie</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-data-jpa</artifactId>

    <dependencies>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.49</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

propertise

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://ip/jpa?characterEncoding=utf-8
    username: root
    password: pass
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
    #不加这句则默认为myisam引擎
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect

注意注释 !!!
默认为myisam引擎 boot2.x 的特性

一、 实体类

1.Member

package com.ronnie.data.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

import javax.persistence.*;
import java.io.Serializable;

/**
* @Description:
* @Author: rongyu
* @CreateDate: 2018/8/31$ 10:06$
* @Remark:
*/
@Data
@Table
@Entity
public class Member implements Serializable {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   private String username;

   @JsonIgnore
   private String password;

}

MemberOrder

如果用order请修改映射表名 order为数据库关键字 生成DDL 语法错误

package com.ronnie.data.entity;

import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;

import javax.persistence.*;
import java.util.Date;

/**
 * @Description:
 * @Author: rongyu
 * @CreateDate: 2018/9/1$ 15:33$
 * @Remark:
 */
@Data
@Table
@Entity
public class MemberOrder {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String goodsName;

    private Integer number;

    @JoinColumn(name = "member_id")
    @ManyToOne
    private Member member;

    @CreationTimestamp
    private Date creationTime;

}

Dao

继承JpaRepository 就可以直接使用接口里面的方法

package com.ronnie.data.repository;

import com.ronnie.data.entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.PagingAndSortingRepository;

/**
 * @Description:
 * @Author: rongyu
 * @CreateDate: 2018/8/31$ 10:12$
 * @Remark:
 */
public interface MemberDao extends JpaRepository<Member,Long>{
}

查询

package com.ronnie.data;

import com.ronnie.data.entity.Member;
import com.ronnie.data.entity.MemberOrder;
import com.ronnie.data.repository.MemberDao;
import com.ronnie.data.repository.MemberOrderDao;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.Optional;

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class ApplicationTests {

    @Autowired
    MemberDao memberDao;
    @Autowired
    MemberOrderDao orderDao;

    @Test
    public void addTestData() throws InterruptedException {
        // Member member = memberDao.getOne(1L); bad way
        Optional<Member> optionalMember = memberDao.findById(1L);
        Member member = optionalMember.get();
        for (int i = 0; i < 12; i++) {
            MemberOrder order = new MemberOrder();
            order.setGoodsName("coco");
            order.setMember(member);
            order.setNumber(10);
            Thread.sleep(1000);
            orderDao.save(order);
        }
    }

    @Test
    public void queryDemo() {
        // add condition
        MemberOrder order = new MemberOrder();
        Member member = new Member();
        member.setUsername("root");
        order.setMember(member);
        Example<MemberOrder> example = Example.of(order);
        // add order by
        Sort.Order order1 = new Sort.Order(Sort.Direction.DESC, "id");
        Sort.Order order2 = new Sort.Order(Sort.Direction.ASC, "number");
        Sort sort = Sort.by(order1, order2);
        // add pageable
        PageRequest pageRequest = PageRequest.of(0, 10, sort);
        // findAll with page
        Page<MemberOrder> result = orderDao.findAll(example, pageRequest);
        log.info("result={}", result);
    }

}

jpaJpaRepository 接口之中所有方法,接受的都是分页查询过程中的对象,直接调用即可

github https://github.com/ronnierry/spring-boot-data/tree/master/spring-data-jpa
QQ群 : 869658872

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
15天前
|
人工智能 Java 机器人
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
Spring AI Alibaba集成Ollama,基于Java构建本地大模型应用,支持流式对话、knife4j接口可视化,实现高隐私、免API密钥的离线AI服务。
350 1
基于Spring AI Alibaba + Spring Boot + Ollama搭建本地AI对话机器人API
存储 JSON Java
196 0
|
22天前
|
人工智能 Java 开发者
【Spring】原理解析:Spring Boot 自动配置
Spring Boot通过“约定优于配置”的设计理念,自动检测项目依赖并根据这些依赖自动装配相应的Bean,从而解放开发者从繁琐的配置工作中解脱出来,专注于业务逻辑实现。
|
1月前
|
SQL Java 数据库连接
Spring Data JPA 技术深度解析与应用指南
本文档全面介绍 Spring Data JPA 的核心概念、技术原理和实际应用。作为 Spring 生态系统中数据访问层的关键组件,Spring Data JPA 极大简化了 Java 持久层开发。本文将深入探讨其架构设计、核心接口、查询派生机制、事务管理以及与 Spring 框架的集成方式,并通过实际示例展示如何高效地使用这一技术。本文档约1500字,适合有一定 Spring 和 JPA 基础的开发者阅读。
137 0
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
375 3
|
存储 SQL druid
Springboot 整合 spring batch 实现批处理 ,小白文实例讲解
Springboot 整合 spring batch 实现批处理 ,小白文实例讲解
2522 0
Springboot 整合 spring batch 实现批处理 ,小白文实例讲解
|
16天前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
115 4
基于springboot+vue开发的会议预约管理系统
|
2月前
|
前端开发 JavaScript Java
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
本系统基于SpringBoot与Vue3开发,实现校园食堂评价功能。前台支持用户注册登录、食堂浏览、菜品查看及评价发布;后台提供食堂、菜品与评价管理模块,支持权限控制与数据维护。技术栈涵盖SpringBoot、MyBatisPlus、Vue3、ElementUI等,适配响应式布局,提供完整源码与数据库脚本,可直接运行部署。
89 0
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】