6、JavaWeb-Mybatis

P116 Mybatis-入门

Mybatis是一款优秀的持久层框架,用于简化JDBC的开发。

持久层就是三层控制中的Dao层,数据访问层/持久层,

P117 Mybatis-入门-快速入门程序

步骤:

  • 创建springboot工程,数据表和实体类

  • 引入mybatis依赖,配置Mybatis,数据库连接信息,在properites中编写

  • 编写sql语句,基于注解或者基于xml方式

要引入Mybatis Framework和mysql driver

mybatis操作数据库就是在java中编写sql,

按照mybatis规范需要定义一个持久接口mapper,加上注解@Mapper,表明是mybatis的持久接口,

在mybatis中只需要定义mapper接口就可以了,不需要定义实现类,因为程序在运行时框架底层就自动定义了实现类,

依赖解释:

<!--        mysql驱动包--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency>

建立表格和数据,如图:

在这里插入图片描述

属性与字段是一一对应的。

配置数据库的连接信息可以如下:

#四要素#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc://localhost::3306/javawebstudy-mybatis
#连接数据库的用户
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=12345

SQL语句使用注解的方式实现,放在mapper包中,例如:

@Mapper  // 框架运行时会自动生成该接口的实现类对象(代理对象)
// 并且将该对象交给IOC容器管理
public interface UserMapper {
//    查询全部用户信息// 多条信息封装到集合当中// 加上注解,表名是SQL查询@Select("select * from user")public List<User> list();
}

单元测试的方法应该在test目录中进行,其中@SpringBootTest注解就是springboot整合单元测试的注解,有这个注解单元测试方法在运行的就会自动加载整个环境,创建IOC容器,再通过依赖注入获取到需要的bean对象,

进行单元测试,输出效果如下所示:

在这里插入图片描述

P118 Mybatis-入门-配置SQL提示

默认mybatis中编写SQL语句是不识别的,可以如下配置:
在这里插入图片描述

不提示表名,是因为idea和数据库没有建立连接,不识别表信息,应在idea中配置mysql数据库连接。

P119 Mybatis-入门-JDBC

mybais简化JDBC的使用

JDBC:java database connectivity,使用java操作关系型数据库的一套API

JDBC仅仅是借口,具体的实现依据数据库的不同而不同,各个厂商提供的实现就是驱动,提供数据库驱动jar包。

在这里插入图片描述

使用的是JDBC的接口,真正执行的代码是驱动Jar包中的实现类。

在原始JDBC中,连接数据库信息是写死在java代码中,硬代码,一旦发生变动,代码需要重新更改后打包编译运行,解析封装字段也很繁琐,频繁获取连接,资源浪费

在mybatis中解决方法为:

  • 直接操作properties配置文件

  • Mybatis自动将查询结果进行封装

  • 通过spring.datasource,spring底层会自动采用数据库连接池技术统一管理好分配这些连接,因此执行sql语句的时候,每次从连接池中获取连接就可以了,然后执行sql语句,执行完毕后再将连接归还给连接池,起到复用,类似线程池

P120 Mybatis-数据库连接池

数据库连接池类似线程池,也是一个容器,存储的是数据库的一个个连接对象connection,即负责分配、管理数据库连接connection.

允许应用程序重复使用一个现有的数据库连接,而不是重新再建立一个。

会释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。

优势:

  • 资源重用

  • 提升系统响应速度

  • 避免数据库连接遗漏

实现的标准接口:DataSource

要想获取一个连接,可以使用getConnection()

常见的数据连接池:

  • C3P0

  • DBCP

  • Druid,常用

    • Durid连接池是阿里巴巴开源的数据库连接池项目

    • 功能强大,性能优秀,是java语言最好的数据库连接池之一

  • Hikari,springboot中默认自带

在项目中使用Druid,例如:

  • 先引入相关的起步依赖,假设是springboot2x版本则是下面的
<!--        引入Druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency>

假设是springboot3x版本则是下面的,

<!--        引入Druid依赖--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.20</version></dependency>

进行单元测试则成功切换到Druid数据池,

在这里插入图片描述

  • 配置数据库连接信息

P121 Mybatis-lombok工具包介绍

使用lombok解决实体类创建的臃肿现象,使用一些注解解决了问题,就不需要再去声明一系列get、set等方法。

lombok是一个实用的java类库,通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,可以自动化生成日志变量,简化java开发,提高效率。

在这里插入图片描述

引入依赖:

<!--        添加lombok依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>

然后实体类可以是:

@Data
public class User {private Integer id;private String name;private Integer age;private Integer gender;private String phone;
}

以后就可以使用lombok的注解简化实体类的定义

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

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

相关文章

【办公类-39-03】批量下载微信公众号图片(三)-微信公众号链接的爬虫下载

背景需求&#xff1a; 测试两种公众号图片下载&#xff0c; 1、UIBOT下载速度慢&#xff0c;也需要有UIBOT软件 【办公类-39-01】批量下载微信公众号图片&#xff08;一&#xff09;UIBOT图片下载-CSDN博客文章浏览阅读289次。【办公类-39-01】批量下载微信公众号图片&#…

Python笔记(三)—— Python循环语句

循环普遍存在于日常生活中&#xff0c;同样&#xff0c;在程序中&#xff0c;循环功能也是至关重要的基础功能。 循环在程序中同判断一样&#xff0c;也是广泛存在的&#xff0c;是非常多功能实现的基础&#xff1a; bilibili循环轮播图 循环和判断一样&#xff0c;同样是程序…

XXE-XML实体注入漏洞

目录 1.xml基础 1.1什么是xml 1.2xml文档结构 1.3 什么是DTD 1.4 什么是实体 1.5 什么是外部实体 2.xxe漏洞 2.1xxe漏洞基本介绍 2.2xxe漏洞的危害 经典漏洞案例分析 3.xxe漏洞挖掘和利用 3.1. 识别潜在的XML入口 3.2. 检查XML处理逻辑 3.3. 构造试探Payload 常…

Redis核心数据结构之字典(一)

字典 概述 字典又称为符号表(symbol table)、关联数组(associative array)或映射(map)&#xff0c;是一种保存键值对(key-value pair)的抽象数据结构&#xff0c;在字典中&#xff0c;一个键(key)可以和一个值(value)进行关联(或者说将键映射为值)&#xff0c;这些关联的键和…

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案

OpenText Availability——适用于 Windows 和 Linux 服务器的高可用性和灾难恢复解决方案 连续复制&#xff0c;最大限度地减少数据丢失快速故障转移&#xff0c;最大限度地减少停机时间可忽略的性能影响支持物理、虚拟和基于云的系统平台 停机从多种途径侵扰 IT 企业。 从相…

最佳牛围栏(二分 + 前缀和)

最佳牛围栏 原题链接&#xff1a;https://www.acwing.com/problem/content/104/ 题目 思路 我们发现若是枚举答案的话&#xff0c;那么我们判断是否存在一个平均值大于等于mid&#xff0c;如果最优解是x&#xff0c;那么mid < x的时候&#xff0c;必然可以找到一段&#x…

算法---双指针练习-1(移动零)

移动零 1. 题目解析2. 讲解算法原理数组划分&#xff0c;数组分块&#xff08;核心思想&#xff09;如何做到 3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 数组划分&#xff0c;数组分块&#xff08;核心思想&#xff09; dest一般初始化为-1&#x…

计算机设计大赛 深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

16、电源管理入门之驱动Runtime PM管理

目录 1. 框架介绍 1.1 为什么需要Runtime PM Framework? 1.2 系统框架图 2. Drivers 3. Runtime PM core 4. power domain framework 5. runtime pm的sysfs 6参考: Runtime PM管理也就是设备驱动里面的电源管理,即设备驱动结构体里面的struct dev_pm_ops,只控制设…

bun实现HTTP服务器

Bun 提供了原生 Bun.serve API。它实现了 fetch 以及Node.js的 http 和 https 模块。 这些模块已被重新实现&#xff0c;以使用 Bun 的快速内部 HTTP 基础设施。随意直接使用这些模块;像 Express 这样依赖于这些模块的框架应该开箱即用。有关详细的兼容性信息&#xff0c;请参阅…

【HarmonyOS】ArkTS-箭头函数

箭头函数 箭头函数是 比普通函数 更简洁 的一种函数写法 () > {}() > {// 函数体 }let 函数名 () > {// 函数体 }let 函数名 () > {// 函数体 } 函数名(实参1, 实参2)let 函数名 (形参1: 类型, 形参2: 类型) > {// 函数体 } 函数名(实参1, 实参2)let 函数名 …

变频器学习

西门子变频器 SINAMICS V20 入门级变频器 SINAMICS G120C

《Trustzone/TEE/安全-实践版》介绍

第一章&#xff1a;课程说明和准备 课程介绍和说明 资料准备 为什么使用qemu_v8环境&#xff1f; 为什么选择香橙派开发板&#xff1f; optee qemu_v8环境展示 香橙派optee环境展示 第二章&#xff1a;Qemu环境搭建 ubuntu20.04的安装(virtualboxubuntu20.04) 搭建optee qem…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

Unity3D学习之XLua实践——背包系统

文章目录 1 前言2 新建工程导入必要资源2.1 AB包设置2.2 C# 脚本2.3 VSCode 的环境搭建 3 面板拼凑3.1 主面板拼凑3.2 背包面板拼凑3.3 格子复合组件拼凑3.4 常用类别名准备3.5 数据准备3.5.1 图集准备3.5.2 json3.5.3 打AB包 4 Lua读取json表及准备玩家数据5 主面板逻辑6 背包…

寻找旋转排序数组中的最小值[中等]

优质博文IT-BLOG-CN 一、题目 已知一个长度为n的数组&#xff0c;预先按照升序排列&#xff0c;经由1到n次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组nums [0,1,2,4,5,6,7]在变化后可能得到&#xff1a; 【1】若旋转4次&#xff0c;则可以得到[4,5,6,7,0,1,2…

【自然语言处理六-最重要的模型-transformer-下】

自然语言处理六-最重要的模型-transformer-下 transformer decoderMasked multi-head attentionencoder和decoder的连接部分-cross attentiondecoder的输出AT(Autoregresssive)NAT transformer decoder 今天接上一篇文章讲的encoder 自然语言处理六-最重要的模型-transformer-…

吴恩达机器学习笔记十五 什么是导数 计算图 大型神经网络案例

假设函数 J(w)w^2&#xff0c;当 w3 时&#xff0c; J(w)3*39 当我们给w增加一个很小的量时&#xff0c;观察J(w)如何变化。 例如 w30.001&#xff0c; 则J&#xff08;w&#xff09;9.006001&#xff0c;因此当w3且增加一个变化量 ε 时&#xff0c;J(w)将会增加 6ε&#x…

Northwestern University-844计算机科学与技术/软件工程-机试指南【考研复习】

本文提到的西北大学是位于密歇根湖泊畔的西北大学。西北大学&#xff08;英语&#xff1a;Northwestern University&#xff0c;简称&#xff1a;NU&#xff09;是美国的一所著名私立研究型大学。它由九人于1851年创立&#xff0c;目标是建立一所为西北领地地区的人服务的大学。…

泛型 --java学习笔记

什么是泛型 定义类、接口、方法时&#xff0c;同时声明了一个或者多个类型变量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;称为泛型类、泛型接口&#xff0c;泛型方法、它们统称为泛型 可以理解为扑克牌中的癞子&#xff0c;给它什么类型它就是什么类型 如…