Spring Data JPA框架持久化存储数据到数据库


Posted in Java/Android onApril 28, 2022

1.SpringBoot项目整合JPA

1.1 pom.xml依赖

<properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</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>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

1.2 application配置文件

application.yml文件如下

# 应用名称
spring:
  application:
    name: springboot-jpa01

  # jpa参数配置
  jpa:
    database: MySQL
    database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
    show-sql: true
    hibernate:
      ddl-auto: update
  # 运行环境设置
  profiles:
    active: dev

# 应用服务 WEB 访问端口
server:
  port: 8080

application-dev.yml文件如下

# 应用名称
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/yg-jpa?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: root

2.创建实体类

创建与数据库表映射的实体类,绑定字段之间的对应关系,如下

package com.kkarma.web.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.*;
import java.time.LocalDateTime;

/**
 * @Author: karma
 * @Date: 2022/3/31 0031 - 03 - 31 - 15:13
 * @Description: com.kkarma.web.entity
 * @version: 1.0
 */
@Entity
@Table(name = "sys_member")
@Data
public class Member {

    @Id()
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id")
    private Long memberId;

    @Column(name = "member_name", unique = true, nullable = false, length = 64)
    private String memberName;

    @Column(name = "password", length = 256)
    @JsonIgnore
    private String password;

    @Column(name = "dept_id")
    private Integer deptId;

    @Column(name = "realname", length = 64)
    private String realName;

    @Column(name = "avatar", length = 500)
    private String avatar;

    @Column(name = "phone", length = 11)
    private String phone;

    @Column(name = "email", length = 64)
    private String email;

    @Column(name = "gender", length = 1)
    private Integer gender;

    @CreatedDate
    @Column(name = "gmt_create", updatable = false)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtCreate;

    @CreatedBy
    @Column(name = "created_by", updatable = false, length = 64)
    private String createdBy;

    @LastModifiedDate
    @Column(name = "gmt_modified")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(shape=JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime gmtModified;

    @LastModifiedBy
    @Column(name = "updated_by", length = 64)
    private String updatedBy;

    @Column(name = "remark", length = 64)
    private String remark;
}

3.启动项目,测试验证

启动项目成功之后,会自动在数据库中创建数据库表,如果创建数据库表成功,说明JPA框架继承和配置都是OK的。

Spring Data JPA框架持久化存储数据到数据库

Spring Data JPA框架持久化存储数据到数据库

以上就是Spring Data JPA实现持久化存储数据到数据库的示例代码的详细内容!


Tags in this post...

Java/Android 相关文章推荐
总结一些Java常用的加密算法
Jun 11 Java/Android
解析Java中的static关键字
Jun 14 Java/Android
Java 泛型详解(超详细的java泛型方法解析)
Jul 02 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
Eclipse+Java+Swing+Mysql实现电影购票系统(详细代码)
Jan 18 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
java项目构建Gradle的使用教程
Mar 24 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Android Studio实现带三角函数对数运算功能的高级计算器
May 20 Java/Android
Java时间工具类Date的常用处理方法
May 25 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
基于Android10渲染Surface的创建过程
Aug 14 Java/Android
Spring Data JPA框架的核心概念和Repository接口
Java 多态分析
Java由浅入深通关抽象类与接口(下篇)
Java由浅入深通关抽象类与接口(上篇)
Mybatis-Plus 使用 @TableField 自动填充日期
Apr 26 #Java/Android
Java 写一个简单的图书管理系统
Apr 26 #Java/Android
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
Apr 24 #Java/Android
You might like
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
php实现登录页面的简单实例
2019/09/29 PHP
基于Jquery的$.cookie()实现跨越页面tabs导航实现代码
2011/03/03 Javascript
解决jquery的datepicker的本地化以及Today问题
2012/05/23 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
Javascript设计模式理论与编程实战之简单工厂模式
2015/11/03 Javascript
Bootstrap图片轮播组件使用实例解析
2016/06/30 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
Javascript的this详解
2019/03/23 Javascript
[01:20:06]TNC vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python中argparse模块用法实例详解
2015/06/03 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
对Pandas MultiIndex(多重索引)详解
2018/11/16 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python 使用 PyMysql、DBUtils 创建连接池提升性能
2019/08/14 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
python sleep和wait对比总结
2021/02/03 Python
浅析python连接数据库的重要事项
2021/02/22 Python
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
20年同学聚会邀请函
2014/02/04 职场文书
家长写给老师的建议书
2014/03/13 职场文书
招标授权委托书样本
2014/09/23 职场文书
党员评议思想汇报
2014/10/08 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers