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
elasticSearch-api的具体操作步骤讲解
Jun 28 Java/Android
jackson json序列化实现首字母大写,第二个字母需小写
Jun 29 Java/Android
新手初学Java List 接口
Jul 07 Java/Android
SpringBoot SpringEL表达式的使用
Jul 25 Java/Android
浅谈spring boot使用thymeleaf版本的问题
Aug 04 Java/Android
简述Java中throw-throws异常抛出
Aug 07 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
零基础学java之方法的定义与调用详解
Apr 10 Java/Android
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
Apr 13 Java/Android
Java+swing实现抖音上的表白程序详解
Jun 25 Java/Android
SpringBoot项目部署到阿里云服务器的实现步骤
Jun 28 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危险函数(disable_functions)
2012/02/23 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
ThinkPHP调用common/common.php函数提示错误function undefined的解决方法
2014/08/25 PHP
举例讲解PHP面对对象编程的多态
2015/08/12 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
深入理解Javascript中的循环优化
2013/11/09 Javascript
JavaScript中实现依赖注入的思路分享
2015/01/15 Javascript
Javascript缓存API
2016/06/14 Javascript
js点击按钮实现水波纹效果代码(CSS3和Canves)
2016/09/15 Javascript
Jquery实现跨域异步上传文件总结
2017/02/03 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue登录路由验证的实现
2017/12/13 Javascript
深入理解 webpack 文件打包机制(小结)
2018/01/08 Javascript
angular.js实现列表orderby排序的方法
2018/10/02 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
python实现用户登录系统
2016/05/21 Python
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
python批量读取文件名并写入txt文件中
2020/09/05 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
python实现ping命令小程序
2020/12/28 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
创业计划书——互联网商机
2014/01/12 职场文书
小学生学习感言
2014/03/10 职场文书
三字经教学反思
2014/04/26 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
python可视化大屏库big_screen示例详解
2021/11/23 Python