Spring系列学习四、Spring数据访问

news2025/1/22 16:11:43

Spring数据访问

  • 一、Spring中的JDBC模板介绍
      • 1、新建SpringBoot应用
      • 2、引入依赖:
      • 3、配置数据库连接,注入dbcTemplate对象,执行查询:
      • 4,测试验证:
  • 二、整合MyBatis Plus
      • 1,在你的项目中添加MyBatis Plus的依赖:
      • 2,配置Mapper扫描路径
      • 3,创建Mapper
      • 4, 在服务类中,使用Mapper进行数据库操作:

欢迎回来,亲爱的朋友们!上一章我们介绍了Spring基础组件,并且基本纯Spring环境下实现了经典的Hello World,从中体会了Spring容器的使用,也看到了配置和使用有些麻烦,所以Spring又研发了Spring Boot 用来简化Spring的使用。

Spring Boot 是由 Spring 团队创建的一个用于简化 Spring 应用程序开发的框架。它基于约定优于配置的原则,通过提供自动配置、开箱即用等功能,简化了 Spring 应用程序的搭建和构建过程。Spring Boot 可以快速集成 Spring 的各个模块,并提供了一系列开发和部署的便利特性,如内嵌的 Servlet 容器、自动化的配置管理、健康监测、应用程序度量等。

近两年新的基本Spring的应用,多数都采用Spring Boot来简化应用的开发,而不是用纯原生Spring。 我们接下来对Spring的学习中,也会Spring Boot应用的基础上讲述。

话不多说,拿出你的笔记本和咖啡,开启我们今天的学习:Spring的数据访问。为什么要学习数据访问?因为在生活中,数据就像水,对于应用程序来说,数据就是灵魂,应用程序就是处理数据的,可见数据在应用程序开发中的核心重要。让我们一起来进入Spring访问数据的方法的学习中!

一、Spring中的JDBC模板介绍

在JAVA中,访问数据的操作,直接通过JDBC访问,整个操作可以说是相当的繁琐,在Spring中,对JDBC访问数据库,提供了很好的模板封装,即JdbcTemplate, 我们首先讲一下如何通过JdbcTemplate来访问数据库。Spring的JDBC模板是一个使得数据库的操作变得超级简单的神奇工具,使用它数据库访问将变得非常简单。

1、新建SpringBoot应用

在这里插入图片描述

2、引入依赖:

在这里插入图片描述

3、配置数据库连接,注入dbcTemplate对象,执行查询:

在这里插入图片描述
在这里插入图片描述

4,测试验证:

在这里插入图片描述

看,是不是就这么简单!不再需要写繁琐的代码建立连接,创建执行器,手工封装对象,处理SQLException、手动关闭数据库连接等。JdbcTemplate就像是一个特效药,处理了所有我们不想处理的烦琐事情,更多使用,请参见官方文档及API。

二、整合MyBatis Plus

JdbcTemplate相对于手工进行jdbc操作,已经方便快捷了很多,而MyBatis Plus作为一个数据库操作框架,提供了面向对象的操作方式,极大的简化了操作数据库的代码,提供了更加丰富的数据库操作方式,并且手动编写SQL也变得非常简洁,也是当前JAVA企业系统开发中,用的最为广泛的数据库操作框架,接下来我们要介绍的是如何将Spring和MyBatis Plus融为一体,有了MyBatis Plus的助力,系统中的数据库操作将无比的丝滑。
基于以上代码,只需要简单的两步,就可以完成整合和使用:

1,在你的项目中添加MyBatis Plus的依赖:

在这里插入图片描述

2,配置Mapper扫描路径

在这里插入图片描述

3,创建Mapper

在这里插入图片描述

4, 在服务类中,使用Mapper进行数据库操作:

在这里插入图片描述

看,就是这么简单!只需要几步,我们就成功的将MyBatis Plus整合到了我们的Spring项目中,并使用其强大的功能。
当然如果业务比较复杂的情况下,可以基于查询和更新的Wrapper进行复杂查询的封装或者使用mapper的xml文件的方式(推荐)。在这里插入图片描述

关于mybatis-plus的更深入的学习,请访问 Mybatis官网 Mybatis Plus示例

可能有同学会有疑问,整合mybatis plus到spring boot时,并没有任何的配置文件的调整,就已经生效了,有点太不可思议, 其实这正是spring boot简化spring开发所坚持的原则,约定优于配置的原则,通过提供自动配置、开箱即用,已经帮我们做好了,只有在我们需要调整时,再按文档进行配置调整即可。

体验完以上所有内容后,相信你已经感受到spring家族化繁为简的迷人之处,它会帮助我们处理一切繁琐的事情,让我们可以专注于写出更美、更富有创意的代码。

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

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

相关文章

IP地址的四大类型:动态IP、固定IP、实体IP、虚拟IP的区别与应用

在网络通信中,IP地址是设备在互联网上唯一标识的关键元素。动态IP、固定IP、实体IP和虚拟IP是四种不同类型的IP地址,它们各自具有独特的特点和应用场景。 1. 动态IP地址: 动态IP地址是由Internet Service Provider(ISP&#xff…

【嵌入式开发学习必备专栏】

文章目录 嵌入式开发学习必备专栏1.1 ARM Coresight SoC-400/SoC-600 专栏导读目录1.1.1 Performance Profiling1.1.2 ARM Coresight Debug 工具系列1.1.2.1 ARM DS5 系列1.1.2.2 劳特巴赫 Trace32 系列1.1.2.3 JTAG OpenOCD 系列 1.2 ARM Cache 专栏1.3 ARM AMBA Bus 专栏1.3.…

vue3 组件之间传值

vue3 组件之间传值 非常好,为啥突然开这样一篇博文,首先是因为 vue3 是未来发展的趋势。其次,vue 官方已经确认,将于2023年最后一天停止对 vue2 项目的维护,这个是官方发出的通知,并且呢,尤雨溪…

FPGA设计时序约束十四、Set_External_Delay

一、序言 在时序约束中对clock的约束还存在一种特殊的延时约束set external delay。set external delay如字面含义,设置外部的时延值,但这个外部时延主要是指反馈时延,即信号从FPGA的output端口输出后经过外部电路回到输入端口的时延值。 二…

JavaSE语法之十二:Object类

文章目录 一、概念二、获取对象信息三、对象比较equals方法四、hashcode方法 一、概念 Object是Java默认提供的一个类。Java里面除了Object类,所有的类都是存在继承关系的,默认会继承Object父类,即所有的类的对象都可以使用Object的引用进行…

前端基础(三十七):属性结构数据进行关键字筛选

效果 核心源码 type MenuItem {label: string;key: string | number;icon?: React.ReactNode;children?: MenuItem[];type?: group; }function filterTreeData(tree: MenuItem[], keyword: string): MenuItem[] {return tree.filter((node: MenuItem) > {if (node.labe…

macOS系统打开Linux的方法

第一步 按下[command空格键]调出搜索框,输入“终端”,打开图上第一个 第二步 如图先输入"sudo -i",敲回车键,再输入开机密码,再敲回车键就可以打开。注意:这里的密码输入不会显示在页面。 如果要…

西城微科|打气泵芯片方案SIC8833

SIC8833作为一款高性能的打气泵方案芯片,这款芯片是一个带24bitADC的8位RISC MCU,内置8k16位OTP程序存储器。具体24位双向I/O口的特性,广泛应用于气压检测和精密测量及控制系统,能满足用户的不同需求和应用场景。 以下是打气泵方案…

Observer观察者模式(组件协作)

观察者模式(组件协作) 链接:观察者模式实例代码 解析 目的 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象&#xff0…

关于Sql数据库中去掉字段的所有空格

这篇文章主要介绍了Sql数据库中去掉字段的所有空格小结篇,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 − Sql数据库中去掉字段的所有空格 字符前的空格,用ltrim(string) 字符…

关于“Python”的核心知识点整理大全51

目录 17.2.2 添加自定义工具提示 bar_descriptions.py 17.2.3 根据数据绘图 python_repos.py 17.2.4 在图表中添加可单击的链接 python_repos.py 17.3 Hacker News API hn_submissions.py 17.4 小结 往期快速传送门👆(在文章最后)&a…

ES6语法特性(二)迭代器 生成器 Promise介绍

迭代器 生成器 Promise介绍 1. 迭代器 迭代器就是为实现对不同集合进行统一遍历操作的一种机制,只要给需要遍历的数据结构部署Iterator接口,通过调用该接口,或者使用消耗该接口的API实现遍历操作。   ES6为迭代器引入了一个隐式的标准化接…

鸿蒙4.0实战教学—基础ArkTS(简易视频播放器)

构建主界面 主界面由视频轮播模块和多个视频列表模块组成,效果图如图: VideoData.ets中定义的视频轮播图数组SWIPER_VIDEOS和视频列表图片数组HORIZONTAL_VIDEOS。 // VideoData.ets import { HorizontalVideoItem } from ./HorizontalVideoItem; impo…

[RoarCTF 2019]Easy Java(java web)

题目 页面如下 页面长得像sql注入 点击help看一下 这里需要了解java web目录结构 WEB INF:Java的web应用安全目录; 此外如果想在页面访问WEB-INF应用里面的文件,必须要通过web.xml进行相应的映射才能访问; WEB-INF是Java Web应用程序中的一…

Java连接Mysql报错:javax.net.ssl.SSLException: Received fatal alert: internal_error

大致报错日志如下: The last packet successfully received from the server was 11 milliseconds ago. The last packet sent successfully to the server was 10 milliseconds ago.at sun.reflect.GeneratedConstructorAccessor275.newInstance(Unknown Source)…

Collections

Collections Collections四种对集合进行排序的方式 方法名说明public static <T extends Comparable<? super T>> void sort (List<T> list)排序public static void reverse(List<?> list)逆序public static void shuffle(List<?> list)随机…

scanf函数返回值占位符详解,%*,%[]的应用

前言 scanf函数可以说是我们一开始就会接触的函数了&#xff0c;但在最近复习时我又找到而来一些之前不甚了解或是块要遗忘的知识&#xff0c;特作此篇。 一.返回值 我们之前提到了scanf返回值被忽略的问题&#xff1a; scanf函数返回值被忽略-CSDN博客 那么scanf的返回值…

Unity JSON编码解码之LitJson 深度剖析

把LitJson的代码库放入到项目中&#xff0c;如图所示:JSON在游戏开发中是一种序列化/反序列化常用的技术&#xff0c;把游戏相关的数据,如地图组成,通过JSON编码&#xff0c;序列化成JSON文本&#xff0c;传输或存储, 要使用的时候再通过JSON技术把文本解析成数据对象&#xff…

Word 将页面方向更改为横向或纵向

文章目录 更改整个文档的方向更改部分页面的方向方法1&#xff1a;方法2&#xff1a; 参考链接 更改整个文档的方向 选择“布局”>“方向”&#xff0c;选择“纵向”或“横向”。 更改部分页面的方向 需要达到下图结果&#xff1a; 方法1&#xff1a; 选:中你要在横向页面…

ThreadLocal为什么存在内存泄漏,源码分析

文章目录 1. ThreadLocal的使用场景2. 弱引用与内存泄露3. 源码分析①&#xff1a;ThreadLocalMap②&#xff1a;set操作③&#xff1a;get操作④&#xff1a;remove操作 4. 继承性 InheritableThreadLocal5. 各类ThreadLocal问题总结 1. ThreadLocal的使用场景 通常&#xff0…