SpringBoot+JPA(官方案例)

news2025/1/12 20:06:36
  1. 在线文档
  2. 项目结构
    1.源码克隆:git clone https://github.com/spring-guides/gs-accessing-data-jpa.git
    2.包含两个项目initial和complete,initial可以根据文档练习完善,complete是完整项目
    3.功能描述:构建应用程序,使用 Spring Data JPA 在关系数据库中存储和检索数据

  3. 源码分析

    1.POM依赖
    <dependencies>
    	<!--https://blog.csdn.net/tongxin_tongmeng/article/details/128586690-->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-data-jpa</artifactId>
    	</dependency>
    
    	<dependency>
    		<groupId>com.h2database</groupId>
    		<artifactId>h2</artifactId>
    		<scope>runtime</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    </dependencies>
    2.POJO类
    @Entity
    public class Customer {
    
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private Long id;
    	private String firstName;
    	private String lastName;
    
    	protected Customer() {}
    
    	public Customer(String firstName, String lastName) {
    		this.firstName = firstName;
    		this.lastName = lastName;
    	}
    
    	@Override
    	public String toString() {
    		return String.format(
    				"Customer[id=%d, firstName='%s', lastName='%s']",
    				id, firstName, lastName);
    	}
    
    	public Long getId() {
    		return id;
    	}
    
    	public String getFirstName() {
    		return firstName;
    	}
    
    	public String getLastName() {
    		return lastName;
    	}
    }
    3.接口类
    public interface CustomerRepository extends CrudRepository<Customer, Long> {
    
    	List<Customer> findByLastName(String lastName);
    
    	Customer findById(long id);
    }
    4.测试类
    /**
     *这是一个 Java 程序的主类。它使用 Spring Boot 应用程序注解(@SpringBootApplication)标记,表示这是一个 Spring Boot 应用程序。
     *
     * 主方法是程序的入口点,在这里调用了 SpringApplication.run() 方法来启动应用程序。
     *
     * 此外,还定义了一个名为 "demo" 的 Bean,类型为 CommandLineRunner。它会在应用程序启动后立即执行。
     *
     * 在 demo 方法中,使用了一个 CustomerRepository 接口的实例来保存几个 Customer 对象,并使用日志打印出所有保存的 Customer 对象。
     *
     * CustomerRepository 接口是由 Spring Data JPA 自动生成的,它继承自 CrudRepository 接口,提供了常用的数据访问操作。
     *
     * 具体来说,它提供了以下方法:
     *
     * save():保存单个对象
     * findAll():查询所有对象
     * findById():根据 id 查询单个对象
     * findByLastName():根据 lastName 查询多个对象
     * 在 demo 方法中,还使用了 Java 8 的新特性——Lambda 表达式。在 repository.findByLastName("Bauer") 之后,使用 forEach() 方法遍历查询结果,并使用 Lambda 表达式打印每个结果。
     */
    // https://blog.csdn.net/tongxin_tongmeng/article/details/128401278
    @SpringBootApplication
    public class AccessingDataJpaApplication {
    
    	private static final Logger log = LoggerFactory.getLogger(AccessingDataJpaApplication.class);
    
    	public static void main(String[] args) {
    		SpringApplication.run(AccessingDataJpaApplication.class);
    	}
    
    	@Bean
    	public CommandLineRunner demo(CustomerRepository repository) {
    		return (args) -> {
    			// save a few customers
    			repository.save(new Customer("Jack", "Bauer"));
    			repository.save(new Customer("Chloe", "O'Brian"));
    			repository.save(new Customer("Kim", "Bauer"));
    			repository.save(new Customer("David", "Palmer"));
    			repository.save(new Customer("Michelle", "Dessler"));
    
    			// fetch all customers
    			log.info("Customers found with findAll():");
    			log.info("-------------------------------");
    			for (Customer customer : repository.findAll()) {
    				log.info(customer.toString());
    			}
    			log.info("");
    
    			// fetch an individual customer by ID
    			Customer customer = repository.findById(1L);
    			log.info("Customer found with findById(1L):");
    			log.info("--------------------------------");
    			log.info(customer.toString());
    			log.info("");
    
    			// fetch customers by last name
    			log.info("Customer found with findByLastName('Bauer'):");
    			log.info("--------------------------------------------");
    			repository.findByLastName("Bauer").forEach(bauer -> {
    				log.info(bauer.toString());
    			});
    			// for (Customer bauer : repository.findByLastName("Bauer")) {
    			// 	log.info(bauer.toString());
    			// }
    			log.info("");
    		};
    	}
    
    }
  4. 项目演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/145817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相机标定中的战斗机--张氏标定法

张正友标定法--相机标定中的灭霸&#xff01;在上学期接触过calibration以后&#xff0c;下定决心要学一下张正友标定法的&#xff0c;然后没来的及学&#xff0c;寒假弥补一下。参考博客&#xff1a;https://zhuanlan.zhihu.com/p/136827980编辑切换为居中添加图片注释&#x…

车牌识别数据收集之自动化筛选工具

综述 最近在进行车牌识别的开发&#xff0c;在数据收集阶段除了那些特定的数据集&#xff08;开源数据集&#xff09;&#xff0c;还需要自己收集一些数据&#xff0c;这些数据主要来自如爬虫、行车记录视频、非特定数据集&#xff0c;而在这些数据集中&#xff0c;只有少量的…

PCB结构和谐振(二)

PCB结构和谐振&#xff08;一&#xff09;实验研究在此章节中&#xff0c;我们通过不同的测试研究了旋转角度/复杂层叠/走线pitch和layout设计等&#xff0c;所有的测试都是基于Intel Delta L 4.0规范。旋转角度单层结构是一个简单的层叠&#xff0c;所以首先通过测试单层结构研…

成都远石无人机航测服务内容

成都远石无人机航测服务致力于为客户提供DEM、DSM、DOM、三维实景模型和机载激光雷达等数据成果&#xff0c;获得的数据成果在各个行业得到了应用和认可。相信大家对于DEM、DSM和DOM这些名词并不陌生&#xff0c;但对其内涵和差别却又比较模糊&#xff0c;接下来就讲一下这些数…

Android:OKhttp拦截器整理笔记

目录 正文 拦截器的自我实现 RetryAndFollowUpInterceptor BridgeInterceptor CacheInterceptor ConnectInterceptor CallServerInterceptor 运行一下 题外话 OkHttp是一个高效的HTTP库: 支持HTTP/2, HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发, 通过…

Referer与XMLHttpRequest整理

Apache日志分割 1.原因 1.随着网络的访问量的增加&#xff0c;默认情况下Apache的单个日志文件也会越来越大。 2.日志文件占用磁盘空间很大 3.查看相关信息不方便2.对日志文件进行分割 1.Apache自带rotatelogs分割工具实现 2.第三方工具cronolog 分割3.配置日志分割(我用的p…

基于springboot+mybatis-plus+mysql+python+tensorflow2.0波导识别管理系统

基于springbootmybatis-plusmysqlpythontensorflow2.0波导识别管理系统一、系统介绍二、功能展示1.图片上传2.波导识别三、代码展示四、其它系统五、获取源码一、系统介绍 技术框架&#xff1a; 前端&#xff1a;vue 后端&#xff1a;springboot 算法&#xff1a;pythontensor…

用八叉树优化RayCasting

在之前的文章中&#xff0c;我们不得不等待 8 分钟来渲染一盏精灵灯和一个球体。 总而言之&#xff0c;我们询问每个像素是否有多个三角形之一相交。 这个场景包括&#xff1a; 4 个物体&#xff1a;1 个灯、2 个球体和 1 个平面34,378 个三角形&#xff1a;1 个球体没有三角形…

某音漂亮小姐姐视频合集一键下载,想看就看!

大家好&#xff0c;我是派森酱&#xff01; 最近工作压力大&#xff0c;每天晚上回来基本洗洗就要睡了。但是总觉得一天就这么过去&#xff0c;有点遗憾&#xff0c;所以每天睡前躺床上刷刷抖音&#xff0c;看看美丽小姐姐&#xff0c;心情就会舒畅许多&#xff01; 有些小姐姐…

架构师成长日记 - 01 4+1视图模型

文章目录 什么是软件架构什么是架构师?架构师的主要能力4+1视图模型逻辑视图(Logical View)开发视图(Development View)物理视图(Physical View)过程视图(Process View)场景视图(scenarios)软件建模语言什么是软件架构 软件架构是有关软件整体结构与组件的抽象描述,用于指导大…

StarkWare的Recursive STARKs

1. 引言 StarkWare的Recursive STARKs 为首个在以太坊主网上线的&#xff0c;针对通用计算的recursive stark proof方案&#xff1a; 递归证明目前已在以太坊主网上线&#xff1a; 扩容StarkEx app扩容StarkNet用于StarkWare的SaaS scaling engine用于permissionless rollup …

javaScript浅谈----asyncawait

什么是 async &#xff1f; async/await 是 ES7 的标准&#xff0c;Promise 是 ES6 标准&#xff0c;async/await 这套 API 也是用来帮助我们写异步代码的&#xff0c;它是构建在 Promise 之上的。 async的特点&#xff1a; async 一般不单独使用&#xff0c;而是和 await 一…

3. 无重复字符的最长子串(滑动窗口)

文章目录题目描述暴力破解滑动窗口优化知识积累待解决题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 示例 2: 输…

python 操作符介绍

python操作符分类&#xff1a;算数操作符&#xff1b;比较操作符&#xff1b;逻辑操作符&#xff1b;成员操作符&#xff1b;身份操作符&#xff1b; 1 算数操作符&#xff1a; 常用的算数操作符&#xff1a;; python如何执行除法&#xff1a; 许多编程语言中整数除法执行的…

另一半人马座,孟庭苇

我写过生于12月25日的半人马座桂纶镁《半人马座&#xff0c;桂纶镁》。射手座是11月23日-12月21日。而摩羯座的开始恰恰是&#xff1a;12月22日。而孟庭苇&#xff0c;恰恰就生于12月22日。她更是半人马座啊。1989年&#xff0c;20岁的孟庭苇出演铃木机车广告出道&#xff08;没…

分享一套响应式自适应公司网站官网源码,带文字搭建教程

分享一套响应式自适应公司网站官网源码&#xff0c;带文字搭建教程。需要源码学习可私信我。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTML cnetos7以上 宝塔面板 系统介绍 1、四网合一企业网站管理系统支持在线升级&#xff08;支持跨版本&#xff09;、插件在线安装、系…

跳表SkipList介绍与实现

目录 一.跳表介绍 二.实现思路 &#xff08;一&#xff09;.结点结构 &#xff08;二&#xff09;.检索 &#xff08;三&#xff09;.插入 &#xff08;四&#xff09;.删除 三.实现代码 一.跳表介绍 跳表是一种随机化数据结构&#xff0c;主要用于快速检索数据。实质上…

JavaScript 函数

文章目录JavaScript 函数JavaScript 函数语法调用带参数的函数带有返回值的函数局部 JavaScript 变量全局 JavaScript 变量JavaScript 变量的生存期向未声明的 JavaScript 变量分配值笔记列表JavaScript 函数 函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块。 实…

Go语言之容器总结

目录 1.值类型 1.1. 数组Array 数组遍历 数组初始化 值拷贝 内置函数len、cap 2. 引用数据类型 2.1. 切片slice 切片初始化 切片的内存布局 通过slice修改struct array值 用append内置函数操作切片&#xff08;切片追加&#xff09; slice自动扩容 slice中cap重新…

基于yolov5算法的安全帽头盔检测源码+模型,Pytorch开发,智能工地安全领域中头盔目标检测的应用

基于yolov5算法的安全帽头盔检测|Pytorch开发源码模型 本期给大家打开的是YOLOv5在智能工地安全领域中头盔目标检测的应用。 完整代码下载地址&#xff1a;基于yolov5算法的安全帽头盔检测源码模型 可视化界面演示&#xff1a; &#x1f4a5;&#x1f4a5;&#x1f4a5;新增…