使用Spring Data JPA 访问 Mysql 数据库-配置项

在Springboot框架上搭建访问mysql数据库的RESTful接口应用 经历了各种不可控与不可预知的磨难(包括但不限于idea闪退、navicat闪退、系统闪退、莫名其妙的bug无数、疯狂搜索各种注解是为什么无数、jdbcTemplate为什么失效了、@autowired为什么失效了,等等!),终于搞定了这个主题!!!! 本篇就来手把手教你搞定这个应用! 1. 大致思路 首先,大致总结一下,如果你想要从零开始,利用springboot框架,写一个能访问数据库并进行crud操作的,能给RESTful风格的接口的应用,应该怎么做: 安装一个mysql环境,不会/不喜欢使用命 阅读详情

jpa操作数据库

注意:数据库采用的是本机数据库,下面是建表语句及初始化数据:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` bigint(0) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `dpt_id` bigint(0) NULL DEFAULT NULL COMMENT '部门id',
  `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `age` int(0) NULL DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '邮箱',
  `head_img` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '头像',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '用户类' ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 1, 'Jone', 18, 'test1@baomidou.com', 'e');
INSERT INTO `user` VALUES (2, 1, 'Jack', 20, 'test2@baomidou.com', 'd');
INSERT INTO `user` VALUES (3, 1, 'Tom', 28, 'test3@baomidou.com', 'c');
INSERT INTO `user` VALUES (4, 1, 'Sandy', 21, 'test4@baomidou.com', 'b');
INSERT INTO `user` VALUES (5, 1, 'Billie', 24, 'test5@baomidou.com', 'a');

SET FOREIGN_KEY_CHECKS = 1;

在idea中配置数据源:idea–>view–>tool windows–>database

创建工程,添加如下依赖

<!--springboot web依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--springboot 操作数据库使用jpa的依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql数据库连接驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok 一款神器,后面专题介绍-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

在创建的工程下的application.yml添加如下数据库配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo?charset=UTF-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

按照如下建立工程目录结构

user代码:
@Entity//标识这个是一个与数据库表对应的entity类
@Data//lombok神器的一个注解,后面专题介绍
@Table ( name ="user" )//这个类是与数据库的哪个表对应的
public class User implements Serializable {

   private static final long serialVersionUID =  829933141479418804L;

   /**
    * 主键ID
    */
   @Id//这个字段是数据库表的主键
       @Column(name = "id" )//这个属性对应表的哪个字段
   @GeneratedValue(strategy= GenerationType.IDENTITY)//主键采用数据库自增方式
   private Long id;

   /**
    * 部门id
    */
       @Column(name = "dpt_id" )
   private Long dptId;

   /**
    * 姓名
    */
       @Column(name = "name" )
   private String name;

   /**
    * 年龄
    */
       @Column(name = "age" )
   private Long age;

   /**
    * 邮箱
    */
       @Column(name = "email" )
   private String email;

   /**
    * 头像
    */
       @Column(name = "head_img" )
   private String headImg;

}

@GeneratedValue注解的strategy属性提供四种值:

  1. –AUTO:主键由程序控制,是默认选项,不设置即此项。
  2. –IDENTITY:主键由数据库自动生成,即采用数据库ID自增长的方式,Oracle不支持这种方式。
  3. –SEQUENCE:通过数据库的序列产生主键,通过@SequenceGenerator 注解指定序列名,mysql不支持这种方式。
  4. –TABLE:通过特定的数据库表产生主键,使用该策略可以使应用更易于数据库移植。
userJpa代码:
@Repository//表示这个是一个操作数据库的Repository类

public interface UserJpa extends JpaRepository<User,Long> {
}
userController代码:
@RestController
@RequestMapping("user")

public class UserController {

    @Resource
    private UserJpa userJpa;

    @GetMapping("findAll")//查找所有数据
    public List<User> findAll(){
        return this.userJpa.findAll();
    }

    @GetMapping("get")//按主键查找数据
    public User get(@RequestParam("id")Long id){
        return this.userJpa.findById(id).get();
    }
}

启动工程,然后用postman测试:查询所有:

查询指定id的数据

全程没写一条sql,数据就这么查询出来了。好了,本节就到这里了。下一节介绍保存,删除,更新,自定义sql

更多原创阅读

从零开始构建高效的Java数据库访问层:使用JPA与Spring Data JPA是Java标准的对象关系映射(ORM)框架,它使得Java对象和数据库表之间的映射变得简单,避免了直接编写SQL代码。JPA提供了一种统一的API来管理数据库中的持久化对象。本文介绍了如何使用JPA和Spring Data高效地构建Java应用的数据库访问层。从配置Spring Boot与JPA、创建实体类和Repository到分页查询、事务管理和并发控制,我们全面覆盖了数据库操作的常见实践。此外,我们也探讨了延迟加载、性能优化以及如何避免常见的查询性能问题。 阅读详情

相关推荐

Spring Data JPA配置使用联合主键demo

我们在Spring Boot下使用Spring Data JPA,在项目的Maven依赖里添加spring-boot-stater-data-jpa,然后只需定义DataSource、实体类和数据访问层,并在需要使用数据访问的地方注入数据访问层的Bean即可,无须任何额外配置。 ...

后面牵个人的博客 1237

如何使用Spring Data JPA简化MySQL数据访问

在使用Spring Data JPA进行数据访问之前,我们需要定义实体类和Repository接口。首先,我们需要定义实体类,它们代表了数据库中的表。// 构造函数、Getter和Setter方法 }// 构造函数、Getter和Setter方法 }// 构造函数、Getter和Setter方法 }// 构造函数、Getter和Setter方法 }// 构造函数、Getter和Setter方法 }

weixin_45701550的博客 985

Spring Data JPA

这套本领可以让UserRepository的能力更上一层楼,比如,想按照名称中的关键字查询用户,只需要按照Spring Data JPA的规范在UserRepository中定义相应的接口。而SQL方式是以表为操作对象的,因此可以使用某种数据库特有的功能,比如某个MySql独有的功能,但是切换到Oracle时就不能了,这一点需要注意。Spring通过一系列的代理,发射,SQL组装,参数绑定,最终生成可执行的DML并发送到数据库中执行,然后将结果封装返回。

zhuangjiaxing的博客 755

JPA怎么样才能像MyBatis那样用法呢?(xml + SQL)

spring-data-jpa-template主要解决的问题:动态的拼接 SQL, 类似 MyBatis, 通过 freemarker 来实现的能够返回任何对象,List,Page.....

qq_18244417的博客 1964

Spring Boot与数据库的集成:使用JPA、JDBC等进行数据访问!

🏆 本文精选收录于《滚雪球学SpringBoot》专栏,专为零基础学习者量身打造。从Spring基础到项目实战,手把手带你掌握核心技术,助力你快速提升,迈向职场巅峰,开启财富自由之路🚀!无论你是刚入门的小白,还是已有基础的开发者,都能在这里找到适合自己的学习路径!    🌟 关注、收藏、订阅,持续更新中!和我们一起高速成长,突破自我!💡

**My Coding Family** 2105

Spring Data JPA 详解

Java持久化技术是Java开发中的重要组成部分,它主要用于将对象数据持久化到数据库中,以及从数据库中查询和恢复对象数据。在Java持久化技术领域,Java Persistence API (JPA) 和 Spring Data JPA 是两个非常流行的框架。Java Persistence API (JPA) 是一种基于 ORM (Object-Relational Mapping) 技术的 Java EE 规范。它主要用于将 Java 对象映射到关系型数据库中,以便于对数据进行持久化操作。

wynn的博客 2966

Spring Data JPA 概述 与 快速入门(操作 mysql 数据)

目录 本文导读 环境准备 新建项目 默认pom. xml 文件 Spring Data JPA CRUD 数据源配置 domain Area 自定义 Dao 接口 JPA 配置 测试生成表 AreaController CRUD 测试 本文导读 1、关于 Spring Data、JPA、Spring Data JPA 等理论只是可以参考《Spring Data JP...

蚩尤后裔-汪茂雄 4240

Spring Boot 数据访问:利用 Spring Data JPA 进行高效的数据库操作!

🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1215

Spring Boot 与 Spring Data JPA 操作 MySQL 数据库(二)

当我们进行分页查询时,Spring Data JPA默认会返回一个Page对象,其中包含了当前页的记录以及分页信息,如总页数、当前页数、每页大小等。但是,有时候我们需要自定义返回结果,比如只返回当前页的记录,不返回总页数等信息。这时,我们可以使用Spring Data JPA提供的投影(Projection)功能来自定义返回结果。投影是Spring Data JPA中非常强大的一个功能,它可以帮助我们自定义查询结果的结构和内容。

YouAreTwoGoods的博客 1782

集成数据库:配置H2、MySQL、PostgreSQL,使用Spring Data JPA简化数据库操作!

🏆本文收录于「滚雪球学SpringBoot」专栏,手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 943

【亲测】ubuntu20.4 安装CUDA11.8

一步一步搭建C++ CUDA CUDNN TENSORRT OPENCV DNN ONNXRUNTIME推理环境

weixin_40950590的博客 3896

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring Data 项目中的子项目,旨在简化与 JPA(Java Persistence API)的集成。它在标准 JPA 的基础上提供了更高层次的抽象,开发者可以使用极少的代码实现复杂的数据操作。Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架,它简化了 JPA 的实现,为开发者提供了一种快速操作数据库的方式。Spring Data JPA 的强大之处在于其灵活的查询方式,支持方法派生、JPQL 和原生 SQL。

好看资源网的博客 2244

SIMULIA-Simpack 2022x新功能介绍

增加库伦摩擦类型力元95 Coulomb Friction增加了3种新的摩擦方向类型用于模拟平面、圆柱和球面摩擦。针对平移和旋转摩擦改进了滑动到粘着过渡阶段的检测,增加一个参数定义两种不同的滑移-粘滞过渡模式,即“Unloaded stick stiffness”和“Preload stick with last slip”。新增加124'Applied Load’力元允许用户将力或扭矩作为恒定值或通过激励元素施加到To Marker点上。该力元建模操作方便,效率高。支持线性柔性体装配。

crystalzhan的博客 1047

Spring Boot数据访问——整合Spring Data JPA篇!超详细!

Spring Data JPA 提供了很多模板代码,易于扩展,可以大幅提高开发效率,使开发者用极简的代码即可实现对数据的访问。基于SpringDataJPA的规范可以提升数据访问层的开发效率和灵活性,开发人员在使用 Spring Data JPA 时,应基于 Spring Data JPA 的规范同时也需要遵守团队的代码规范和风格,保证代码清晰易读,从而开发高质量的程序。

元气满满的霄霄滴博客 2745

vue3的面试题

vue3的面试题

jiang7701037的博客 6270

从SPICE到电磁场:非线性器件在CST场路协同仿真中的建模艺术

本文深入探讨了非线性器件在CST场路协同仿真中的建模技术,重点分析了SPICE模型与电磁场仿真的集成方法。通过对比线电流模型和面电流模型的优缺点,结合实际案例展示了二极管阵列在电磁散射调控中的应用,为工程师提供了优化仿真精度与效率的实用技巧。

pandas7gardener的博客 200

Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA

Spring Boot 整合 Spring Data JPA、strategy 的策略区别、什么是 Spring Data JPA

hutao8896的博客 1113

Python-编写点云处理软件(二)点云软件ui制作之仿CC界面

至本篇结束,我们已经能够获得一个有点模子的界面了,但是具体的功能还没有编写,后续的文章将逐渐完善功能。

weixin_43894929的博客 3953

SpringBoot第二讲利用Spring Data JPA实现数据库的访问(一)

在基本了解了springboot的运行流程之后,我们需要逐个来突破springboot的几个关键性问题,我们首先解决的是springboot访问数据库的问题。java访问数据库经历了几个阶段,第一个阶段是直接通过JDBC访问,这种方式工作量极大,而且会做大量的重复劳动,之后出现了一些现成的ORM框架,如Hibernate、Mybatis等,这些框架封装了大量的数据库的访问操作,但是我们依然要对这些框

ynkonghao的博客 3664

《唤醒你的AI同事:WorkBuddy从零上手》004:与其他 AI 工具的对比

把 WorkBuddy 与聊天机器人、办公套件内置 AI、自动化工具逐维对比,并按当前版本补充四项新差距:结果交付、连接器广度、资料库与多模态产出。

LuckyHanMo的博客 678

如何在 Ubuntu 22.04 上安装和配置 VNC 服务器?

VNC(Virtual Network Computing)是一种图形桌面共享系统,通过网络允许用户控制另一台计算机的桌面环境。无论你是系统管理员还是开发人员,VNC 都可以在远程访问桌面环境时提供极大的便利。在安装和配置 VNC 服务器之前,我们需要确保系统是最新的,并安装一些基本工具。这些命令将更新你的软件包列表并升级所有已安装的软件包,以确保你拥有最新的安全修复和功能更新。

网络技术联盟站 4003

JPA、Hibernate、Spring data jpa之间的关系,终于明白了

什么么是JPA? 全称Java Persistence API,可以通过注解或者XML描述【对象-关系表】之间的映射关系,并将实体对象持久化到数据库中。 为我们提供了: 1)ORM映射元数据:JPA支持XML和注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中; 如:@Entity、@Table、@Column、@Transient等注解。 2)JPA 的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的JDBC和.

wushijuewu 1818

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

Java持久化之--Spring Data JPA

JPA(Java Persistence API)是Java实现ORM(Object Relational Mapping)技术提供的规范,主要用于将Java对象映射到关系数据库,便于持久化操作。Spring Data JPA是Spring 框架下的一个模块,是基于JPA规范实现的上层封装,旨在简化JPA的使用。

GM_115的博客 1119

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring Boot中使用Spring Data JPA访问MySQL

**Spring Data JPA**是Spring框架提供的用于简化JPA(Java Persistence API)开发的数据访问层框架。它通过提供一组便捷的API和工具,简化了对JPA数据访问的操作,同时也提供了一些额外的功能,比如动态查询、分页、排序等。 当我们在经历过真正的开发之后,我们会发现,在实际开发过程中,我们对数据库的操作主要为“增删改查”。最为普通的单表操作而言,除了表和字段不同外,语句基本上都是类似的,作为开发者的我们,经常需要写大量类似并未枯燥无聊的语句类完成我需要的业务逻辑。

好看的皮囊千篇一律,有趣的灵魂万里挑一。 1122

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

springboot中使用Spring Data Jpa

ORM即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。在ORM出现之前,我们是用jdbc来操作数据库,但jdbc没有封装,对于大项目来说,使用复杂,也难以实现MVC的概念,所以人们就开发了ORM框架来解决这些问题。比如Hibernate,Mybatis,不过Hibernate是完全的ORM框架,mybatis是半ORM框架,因为它需要手动建表和自

daimenglaoshi的博客 1071

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 开发必备神器——POSTMAN
下一篇: Java程序员必备奇淫巧技篇(上)
大盛玩java
博客等级 码龄5年 0粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值