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 相关文章推荐
Springboot如何使用logback实现多环境配置?
Jun 16 Java/Android
SpringBoot生成License的实现示例
Jun 16 Java/Android
启动Tomcat时出现大量乱码的解决方法
Jun 21 Java/Android
详解Java线程池是如何重复利用空闲线程的
Jun 26 Java/Android
小程序与后端Java接口交互实现HelloWorld入门
Jul 09 Java/Android
Java中CyclicBarrier和CountDownLatch的用法与区别
Aug 23 Java/Android
Java设计模式之享元模式示例详解
Mar 03 Java/Android
Netty分布式客户端处理接入事件handle源码解析
Mar 25 Java/Android
详解Flutter和Dart取消Future的三种方法
Apr 07 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
Apr 13 Java/Android
详解Flutter自定义应用程序内键盘的实现方法
Jun 14 Java/Android
OpenFeign实现远程调用
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和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
php连接Access数据库错误及解决方法
2013/06/20 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP常见的几种攻击方式实例小结
2019/04/29 PHP
jQuery 隔行换色 支持键盘上下键,按Enter选定值
2009/08/02 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
利用jq让你的div居中的好方法分享
2013/11/21 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
AngularJS中的过滤器filter用法完全解析
2016/04/22 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
vue 将页面公用的头部组件化的方法
2017/12/18 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
如何区分vue中的v-show 与 v-if
2020/09/08 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
vue+echarts实现中国地图流动效果(步骤详解)
2021/01/27 Vue.js
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python设计模式之享元模式原理与用法实例分析
2019/01/11 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
python第三方库学习笔记
2020/02/07 Python
在pytorch中动态调整优化器的学习率方式
2020/06/24 Python
销售员自我评价怎么写
2013/09/19 职场文书
巡警年度自我鉴定
2014/02/21 职场文书
大学军训感言300字
2014/03/09 职场文书
给校长的一封建议书
2014/03/12 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
乡镇消防安全责任书
2014/07/23 职场文书
2014年客房部工作总结
2014/11/22 职场文书
董事长开业致辞
2015/07/29 职场文书
关爱空巢老人感想
2015/08/11 职场文书
基于redis+lua进行限流的方法
2022/07/23 Redis