SpringBoot-快速搭建一套JPA

2023-05-16

文章目录

    • 结构
    • Maven
    • application.yml
    • 实体类
    • dao
    • service
    • controller
    • 测试

结构

在这里插入图片描述

Maven

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.7.6</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>

 <groupId>com.example</groupId>
 <artifactId>springboot-jpa</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>springboot-jpa</name>
 <description>springboot-jpa</description>

 <properties>
  <java.version>1.8</java.version>
  <!-- 文件拷贝时的编码-->
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  <!-- 编译时的编码 这里就是你运行项目,会给你的文件进行编码-->
  <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
 </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>com.mysql</groupId>
   <artifactId>mysql-connector-j</artifactId>
   <scope>runtime</scope>
  </dependency>
  <dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>druid</artifactId>
   <version>1.2.15</version>
  </dependency>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-configuration-processor</artifactId>
   <optional>true</optional>
  </dependency>
  <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <optional>true</optional>
  </dependency>
  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-test</artifactId>
   <scope>test</scope>
  </dependency>
 </dependencies>

 <build>
  <plugins>
   <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
     <excludes>
      <exclude>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
      </exclude>
     </excludes>
    </configuration>
   </plugin>
  </plugins>
 </build>

使用IDEA的可以安装下面的插件这样在使用JPA进行编码的时候非常舒服,各种提示
在这里插入图片描述

application.yml

server:
  port: 9878

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver #驱动
    url: jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
    type: com.alibaba.druid.pool.DruidDataSource
    username: root
    password: root
  jpa:
    hibernate:
      ddl-auto: update #自动更新  ,每次运行程序,没有表格会新建表格,表内有数据不会清空,只会更新
    show-sql: true  #日志中显示sql语句   ,生产环境不要开启
    properties:
      hibernate:
        enable_lazy_load_no_trans: true #懒加载

实体类

注意: 实体类中的字段类型 必须是包装类型,否则会导致查询出现默认值的现象

package com.example.springbootjpa.entity;


import lombok.*;
import org.hibernate.Hibernate;

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

@Getter
@Setter
@ToString
@RequiredArgsConstructor
@Entity // 标识这是一个实体类,并且使用默认的orm规则,即class名即数据库表中表名,class字段名即表中的字段名
@Table(name = "t_user") //来改变class名与数据库中表名的映射规则
public class UserEntity {
    @Id
    // GenerationType.IDENTITY使用数据库的自增
    // 如果是oracle则需要使用GenerationType.SEQUENCE配合@SequenceGenerator
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private Long id;
    @Column
    private String name;
    @Column
    private String email;
    @Column
    private  String phone;
    @Column
    private String password;
    @Column
    private  Integer age;
    @Column
    private  Integer sex;
    @Column
    private Integer status;

    @Temporal(TemporalType.TIMESTAMP)
    @Column
    private Date creationTime;
    @Column
    private  String site;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o)) return false;
        UserEntity that = (UserEntity) o;
        return id != null && Objects.equals(id, that.id);
    }

    @Override
    public int hashCode() {
        return getClass().hashCode();
    }
}

一般来说,我们都是先设计数据库然后在设计实体类, 如果你是使用的是jpa就可以先设计实体类,而对应的表在启动项目的时候就会自动创建了

dao

public interface UserDao extends JpaRepository<UserEntity, Long> {
}

一般来说继承JpaRepository即可 ,内部包括常规的增删改查

service

package com.example.springbootjpa.service;

import com.example.springbootjpa.entity.UserEntity;

import java.util.List;

public interface UserService {

    //查询全部用户
    List<UserEntity> findAll();


}



package com.example.springbootjpa.service.impl;

import com.example.springbootjpa.dao.UserDao;
import com.example.springbootjpa.entity.UserEntity;
import com.example.springbootjpa.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl  implements UserService {
    @Autowired
    private UserDao userDao;


    @Override
    public List<UserEntity> findAll() {
        return userDao.findAll();
    }
}

controller

package com.example.springbootjpa.controller;

import com.example.springbootjpa.entity.UserEntity;
import com.example.springbootjpa.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/findAll")
    public ResponseEntity<List<UserEntity>> findAll(){
        return  ResponseEntity.ok(userService.findAll());
    }
}


测试

package com.example.springbootjpa;

import com.example.springbootjpa.controller.UserController;
import com.example.springbootjpa.dao.UserDao;
import com.example.springbootjpa.entity.UserEntity;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.ResponseEntity;

import java.util.List;

@SpringBootTest
class SpringbootJpaApplicationTests {
 @Autowired
 private UserController userController;
 @Test
 void contextLoads() {
  ResponseEntity<List<UserEntity>> all = userController.findAll();
  List<UserEntity> body = all.getBody();
  System.out.println(body);
 }

}

在这里插入图片描述

点赞 -收藏-关注-便于以后复习和收到最新内容
有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考
免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。
感谢,配合,希望我的努力对你有帮助^_^
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot-快速搭建一套JPA 的相关文章

  • 朱老师Study210开发板刷系统实验(Win10系统)

    最近入手了朱有鹏老师的嵌入式Linux核心课程和Study210开发板 xff0c 开始跟着视频进行嵌入式linux的系统学习 由于视频录的时间很早 xff0c 在跟着视频学习的过程中发现有些细节跟视频里的的对不上 xff08 主要是因为我
  • Python-常用数据类型及其用法汇总(全面、详细、具体、明了)

    整数 xff1a 11 0b11 0o11 0x11 xff08 0b为二进制 xff0c 0o为8进制 xff0c 0x为16进制 xff09 浮点数 xff1a 1 1 3 14 3 14e5 字符串 xff1a hello world
  • mybatis-day02笔记

    1 Mybatis的Dao层实现 1 1 传统开发方式 1 1 1编写UserDao接口 span class token keyword public span span class token keyword interface spa
  • RabbitMQ 订阅模型-路由模式

    订阅模型 路由模式 xff0c 此时生产者发送消息时需要指定 RoutingKey xff0c 即路由 Key xff0c Exchange 接收到消息时转发到与 RoutingKey 相匹配的队列中 在 Direct 模型下 xff1a
  • RabbitMQ:订阅模型-匹配模式

    阅模型 匹配模式 xff0c 相比于前两种订阅模型 xff0c 是更细致的分组 xff0c 允许 在RoutingKey 中使用匹配符 xff1a 匹配一个单词 xff1a 匹配0个或多个单词 RabbitMQ 订阅模型 匹配 xff08
  • 分布式理论协议与算法 第一弹 CAP理论

    CAP 理论 xff0c 也被称为 CAP 协议 xff0c 指的是在一个分布式系统中 xff0c 最多只能同时满足 一致性 xff08 Consistency xff09 可用性 xff08 Availability xff09 和 分区
  • MongoDB:基础概述

    MongoDB 是一个开源的 跨平台的 面向文档的 基于分布式文件存储的数据库系统 xff0c MongoDB 是由 C 43 43 语言开发 xff0c 旨在为 Web 应用提供可扩展的高性能数据存储解决方案 在高负载的情况下 xff0c
  • MongoDB:安装配置

    MongoDB有两个服务器版本 xff1a MongoDB 社区版 和 MongoDB 企业版 此篇主要介绍 MacOS 下 MongoDB 社区版的安装 xff0c 在 版本 下拉列表中 xff0c 选择要下载的 MongoDB 版本 x
  • 我的三周年创作纪念日

    文章目录 一 CSDN 心路历程1 关于第一篇文章2 初拾 CSDN3 重逢 CSDN 二 CSDN 收获1 关于粉丝2 关于文章 三 文章创作工具分享1 Typora2 PicGo3 作图工具 四 憧憬 一 CSDN 心路历程 1 关于第
  • 购买公司股票 = 变相降薪?

    一些公司会扣除你部分薪金 xff0c 美名其曰购买公司股份 xff0c 为了让你放心 xff0c 也会在合同中写明退出机制 xff0c 例如 xff1a 离职是可原额退回 但当你真的要离职的时候 xff0c 这事情就变得很扯皮了 其实让你入
  • MongoDB:常用命令

    本篇内容主要介绍 xff1a MongoDB 数据库命令 MongoDB 集合命令 MongoDB 文档命令 MongoDB 文档查询拓展 文章目录 一 MongoDB 数据库命令1 启动 MongoDB2 连接 MongoDB3 获取帮助
  • 分布式理论协议与算法 第二弹 ACID原则

    ACID 原则是在 1970年 被 Jim Gray 定义 xff0c 用以表示事务操作 xff1a 一个事务是指对数据库状态进行改变的一系列操作变成一个单个序列逻辑元操作 xff0c 数据库一般在启动时会提供事务机制 xff0c 包括事务
  • MongoDB:在 Java 中使用 MongoDB

    除了通过启动 mongo 进程进如 Shell 环境访问数据库外 xff0c MongoDB 还提供了其他基于编程语言的访问数据库方法 MongoDB 官方提供了 Java 语言的驱动包 xff0c 利用这些驱动包可使用多种编程方法来连接并
  • 分布式理论协议与算法 第三弹 BASE理论

    大部分人解释这 CAP 定律时 xff0c 常常简单的表述为 xff1a 一致性 可用性 分区容错性三者你只能同时达到其中两个 xff0c 不可能同时达到 实际上这是一个非常具有误导性质的说法 xff0c 而且在 CAP 理论诞生 12 年
  • Docker:独具魅力的开源容器引擎

    Docker 是一个开源的应用容器引擎 xff0c 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 xff0c 然后发布到任何流行的 Linux 或 Windows操作系统的机器上 xff0c 也可以实现虚拟化 容器是完全使用沙箱
  • 在不同环境下 Docker 的安装部署

    本篇内容主要介绍了 xff1a Docker xff1a 不同环境下的安装部署 xff0c 包括 xff0c Docker 在 Centos7 下的安装 Docker 在 MacOS 下的安装 Docker 在 Windows 下的安装 以
  • Docker 应用实践-镜像篇

    一个 Docker 镜像往往是由多个镜像层 xff08 可读层 xff09 叠加而成 xff0c 每个层仅包含了前一层的差异部分 xff0c 单个镜像层也往往可以看作镜像使用 xff0c 当我们启动一个容器的时候 xff0c Docker
  • 如何通过限流算法防止系统过载

    限流算法 xff0c 顾名思义 xff0c 就是指对流量进行控制的算法 xff0c 因此也常被称为流控算法 我们在日常生活中 xff0c 就有很多限流的例子 xff0c 比如地铁站在早高峰的时候 xff0c 会利用围栏让乘客们有序排队 xf
  • Docker 应用实践-容器篇

    在 Docker 镜像篇中 xff0c 我们了解到 Docker 镜像类似于模板 xff0c 那么 Docker 容器就相当于从模板复制过来运行时的实例 xff0c Docker 容器可以被创建 复制 暂停和删除等 每一个 Docker 容
  • Java中Json字符串和Java对象的互转

    JSON xff08 JavaScript Object Notation xff09 是一种轻量级的数据交换格式 诞生于 2002 年 易于人阅读和编写 同时也易于机器解析和生成 JSON 是目前主流的前后端数据传输方式 JSON 采用完

随机推荐

  • 老板必看:1.初创业团队没有激情,咋办? 2.小股东的选择

    内容摘要 xff1a 本文有两个来自真实情况的案例 xff0c 因为涉及到 私隐 xff0c 部分内容经过处理 两个案例分别是 xff1a 1 xff09 新创业团队员工积极性差的问题 xff1b 2 xff09 小股东在两大股东的斗法中的
  • 持续事务管理过程中的事件驱动

    比较官方的定义 xff1a 事件驱动是指在持续事务管理过程中 xff0c 进行决策的一种策略 xff0c 即跟随当前时间点上出现的事件 xff0c 调动可用资源 xff0c 执行相关任务 xff0c 使不断出现的问题得以解决 xff0c 防
  • Docker 应用实践-仓库篇

    目前 Docker 官方维护了一个公共仓库 Docker Hub xff0c 用于查找和与团队共享容器镜像 xff0c 界上最大的容器镜像存储库 xff0c 拥有一系列内容源 xff0c 包括容器社区开发人员 开放源代码项目和独立软件供应商
  • 浅谈网络中接口幂等性设计问题

    所谓幂等性设计 xff0c 就是说 xff0c 一次和多次请求某一个资源应该具有同样的副作用 用数学的语言来表达就是 xff1a f x 61 f f x 在数学里 xff0c 幂等有两种主要的定义 在某二元运算下 xff0c 幂等元素是指
  • 分布式系统中的补偿机制设计问题

    我们知道 xff0c 应用系统在分布式的情况下 xff0c 在通信时会有着一个显著的问题 xff0c 即一个业务流程往往需要组合一组服务 xff0c 且单单一次通信可能会经过 DNS 服务 xff0c 网卡 交换机 路由器 负载均衡等设备
  • 关于基于标准库函数与基于HAL库函数的stm32编程方式的差异

    在之前的博客中 xff0c 我已经使用过通过标准库函数和HAL库函数对stm32进行编译工作 xff0c 在这篇博文里 xff0c 我将对之前的进行总结 关于标准库函数 由于stm32系列有着很多不同的芯片 xff0c 其所使用的寄存器也大
  • curl wget pip git-clone yum apt-get的区别

    在linux中 xff0c 会常用到这些命令进行文件下载 xff0c 软件安装以及url访问 xff0c 但总是分不清楚什么时候用什么命令去下载或者安装和访问 这里将这几个命令的用法和区别进行一个说明 xff0c 方便大家学习和记忆 1 首
  • CSS 三种样式

    本节我们要学习一下 CSS 样式的几种形式 xff0c 在实际应用中向 HTML 中引入 CSS 样式的方法有三种 xff0c 分别是行内样式 内部样式 外部样式 我们会依次学习这三种方式的优缺点以及应用场景 xff0c 本节我们先来讲一下
  • JavaFx-报错WindowsNativeRunloopThread

    问题 解决办法 需要卸载掉JDK1 8 并且将环境变量中的 34 JAVA HOME 34 指向改成JDK11的目录 点赞 收藏 关注 便于以后复习和收到最新内容 有其他问题在评论区讨论 或者私信我 收到会在第一时间回复 在本博客学习的技术
  • Gradle-JDK版本问题导致运行失败

    问题 解决办法 因为当前我们使用jdk8去运行Gradle 但是Gradle意思是必须使用11 43 的jdk版本 下面这个问题就是因为 我们默认是 改为 点赞 收藏 关注 便于以后复习和收到最新内容 有其他问题在评论区讨论 或者私信我 收
  • 权力的游戏,我是小股东,咋办?

    案例简述 xff1a 某初创业公司 xff0c 有A B两个大股东 xff0c 股份份额一样大 xff0c 另外还有一个小股东C A股东负责市场和销售 xff0c B股东负责研发和技术 xff0c B曾经是C的上司 xff0c 将C带入公司
  • Java-高版本没有jre的问题

    解决方案 jre 文件夹是可以用命令自动生成的 xff0c 在window环境中 xff0c 进入jdk目录所在的文件夹 xff0c 运行下面命令就会自动 生成jre文件夹 bin span class token punctuation
  • Java-ForkJoinPool(线程池-工作窃取算法)

    文章目录 概述工作窃取算法工作窃取算法的优缺点使用 ForkJoinPool 进行分叉和合并ForkJoinPool使用RecursiveActionRecursiveTask Fork Join 案例Demo 概述 Fork 就是把一个大
  • JavaFx-缺少JavaFX运行时组件,需要这些组件才能运行此应用程序

    问题 报错 缺少JavaFX运行时组件 需要这些组件才能运行此应用程序 解决办法 解决办法额外添加一个类似启动类的java文件 然后将需要启动的文件以class添加到launch里就行 span class token keyword pu
  • Mysql-解决Truncated incorrect DOUBLE value xxx

    问题 出现这种问题一般来说就是多表操作的时候 使用的字段类型不一致导致的 查询除外 我们来看下真实案例 在hd user表中parentId是binint类型 而在hd user increment copy1 96 表中parentId是
  • Mysql-解决创建存储函数This function has none of DETERMINISTIC

    问题 当二进制日志启用后 xff0c 这个变量就会启用 它控制是否可以信任存储函数创建者 xff0c 不会创建写入二进制日志引起不安全事件的存储函数 如果设置为0 xff08 默认值 xff09 xff0c 用户不得创建或修改存储函数 xf
  • JPA-ids for this class must be manually assigned before calling save (使用数据库的自增)

    问题 Spring Data JPA ids for this class must be manually assigned before calling save id的生成错误 xff0c 在调用 save 方法之前 xff0c 必须
  • Java-gradle编译忽略警告

    使用gradle打包的时候出现好多警告 如何忽略大部分的警告呢 使用如下配置即可 tasks span class token punctuation span span class token function withType span
  • JPA-排除实体类里不存在于数据库的字段

    在实体类与数据库表建立映射关系时添加 64 Table 注解 当表中不存在实体类中的某个属性的时候 就需要用到 64 Transient 注解 如果不好使那么在 64 Transient基础上在添加 64 Column updatable
  • SpringBoot-快速搭建一套JPA

    文章目录 结构Mavenapplication yml实体类daoservicecontroller测试 结构 Maven span class token tag span class token tag span class token