6、JavaWeb-Mybatis

news2024/9/24 1:15:25

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.coloradmin.cn/o/1488178.html

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

相关文章

盘点Unity几款编辑器扩展工具

unity编辑器一个不容忽视的强大之处就是非常易于自定义扩展工具&#xff0c;来满足各种各样的美术、策划及程序上的需求。今天为大家介绍Asset Store资源商店中几款实用的编辑器扩展工具&#xff0c;帮助大家直接在Unity编辑器中完成3D建模与调整工作&#xff0c;免去与其它软件…

【网站项目】139选课排课系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

栈与队列力扣经典例题20. 有效的括号1047. 删除字符串中的所有相邻重复项150. 逆波兰表达式求值

对于栈与队列&#xff0c;我们首先要搞清楚&#xff0c;栈是先入后出&#xff0c;而队列是先入先出&#xff0c;利用这个特性&#xff0c;我们来判断题目用什么STL容器&#xff0c;便于我们去解决问题 20. 有效的括号 这道题&#xff0c;首先我们要知道哪些情况&#xff0c;是会…

Kubernetes的Sevice管理

服务原理: 所有服务都是根据这个服务衍生或者变化出来,根服务---- 服务感知后端靠标签 slelector 标签选择器 kubectl label pods web1 appweb kubectl cluter-info dump | grep -i service-cluster-ip-range 服务ip取值范围 Service 管理: 创建服务: --- kind: Serv…

C++ //练习 10.2 重做上一题,但读取string序列存入list中。

C Primer&#xff08;第5版&#xff09; 练习 10.2 练习 10.2 重做上一题&#xff0c;但读取string序列存入list中。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /******************************************************…

Vue3:用vite创建Vue3项目

一、简介 vite是新一代前端构建工具&#xff0c;官网地址&#xff1a;https://vitejs.cn vite的优势如下&#xff1a; 轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现极速的服务启动。对 TypeScript、JSX、CSS 等支持开箱即用。真正的按需编译&#xff0c;不…

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…

王者荣耀整蛊搭建直播新玩法/obs贴纸配置教程

最近很火的王者荣耀整蛊直播&#xff0c;相信很多玩王者的玩家也想开一个直播&#xff0c;但是看到这种直播娱乐效果很有意思也想搭建一个&#xff0c;这里梦哥给大家出了一期搭建的教程&#xff01; 进阶版视频教程&#xff1a; 这期的教程是进阶版新玩法升级&#xff0c;具体…

动态gif怎么在线制作?轻松实现gif在线制作的小窍门

日常我们在使用聊天软件聊天时会使用一些好玩有趣的gif表情包&#xff0c;其实很多gif表情包都是从视频中的提取出来的画面。那么&#xff0c;如何将视频转换成gif动画&#xff1f;通过使用在线动画制作&#xff08;https://www.gif.cn/&#xff09;工具就能轻松实现这一操作&a…

大模型(LLM)的训练语料信息汇总

大规模语料是模型训练的基础 大模型的训练&#xff0c;大规模的语料是很重要的 大型语言模型在许多自然语言处理任务上取得了显著进展&#xff0c;研究人员正在转向越来越大的文本语料库进行训练 大多数基于Transformer的大型语言模型 (LLM) 都依赖于英文维基百科和Common C…

深入探讨 AutoGPT:彻底改变游戏的自主 AI

原文地址&#xff1a;Deep Dive into AutoGPT: The Autonomous AI Revolutionizing the Game 2023 年 4 月 24 日 AutoGPT 是一个功能强大的工具&#xff0c;它通过 API 使用 GPT-4 和 GPT-3.5&#xff0c;通过将项目分解为子任务并在自动循环中使用互联网和其他工具来创建完…

AutoGPT实现原理

AutoGPT是一种利用GPT-4模型的自动化任务处理系统&#xff0c;其主要特点包括任务分配、多模型协作、互联网访问和文件读写能力以及上下文联动记忆性。其核心思想是通过零样本学习&#xff08;Zero Shot Learning&#xff09;让GPT-4理解人类设定的角色和目标&#xff0c;并通过…

Leetcode刷题-(16~20)-Java+Python+JavaScript

算法是程序员的基本功&#xff0c;也是各个大厂必考察的重点&#xff0c;让我们一起坚持写算法题吧。 遇事不决&#xff0c;可问春风&#xff0c;春风不语&#xff0c;即是本心。 我们在我们能力范围内&#xff0c;做好我们该做的事&#xff0c;然后相信一切都事最好的安排就…

企业购物商城官网的作用举足轻重的发展前景分析

互联网时代&#xff0c;信息成为最重要的产品。 一个企业想要进入互联网&#xff0c;就需要一个平台来承载自己的信息。 官网作为企业的对外展示和宣传平台&#xff0c;发挥着重要的作用。 想要一个官方网站&#xff0c;首先要有一个响亮的域名。 中文域名不再是一个新兴产品。…

数字化转型导师坚鹏:金融机构数字化运营

金融机构数字化运营 课程背景&#xff1a; 很多金融机构存在以下问题&#xff1a; 不清楚数字化运营对金融机构发展有什么影响&#xff1f; 不知道如何提升金融机构数字化运营能力&#xff1f; 不知道金融机构如何开展数字化运营工作&#xff1f; 课程特色&#xff1a;…

低代码中的可视化表单:效率与灵活兼备的设计工具

近年来&#xff0c;随着数字化转型的加速推进&#xff0c;企业对于高效率、灵活性和可定制性的软件开发需求不断增长。传统的软件开发过程通常需要耗费大量的时间和资源&#xff0c;而低代码开发平台的出现为企业提供了一种更加快速和灵活的解决方案。在低代码开发平台中&#…

设计模式(十二)享元模式

请直接看原文: 原文链接:设计模式&#xff08;十二&#xff09;享元模式-CSDN博客 -------------------------------------------------------------------------------------------------------------------------------- 享元模式定义 享元模式是结构型设计模式的一种&am…

动态SQL的处理

学习视频&#xff1a;3001 动态SQL中的元素_哔哩哔哩_bilibili 目录 1.1为什么学 1.2动态SQL中的元素 条件查询操作 if 元素 choose、when、otherwise元素 where、trim元素 更新操作 set元素使用场景 复杂查询操作 foreach 元素中的属性 ​编辑 迭代数组 迭代List 迭代Map 1…

计算机设计大赛 深度学习疲劳检测 驾驶行为检测 - python opencv cnn

文章目录 0 前言1 课题背景2 相关技术2.1 Dlib人脸识别库2.2 疲劳检测算法2.3 YOLOV5算法 3 效果展示3.1 眨眼3.2 打哈欠3.3 使用手机检测3.4 抽烟检测3.5 喝水检测 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; **基于深度学习加…

网络架构与组网部署——补充

5G网络架构的演进趋势 &#xff08;1&#xff09; MEC&#xff1a;多接入边缘计算。首先MEC可以实现5GC的功能&#xff0c;因为5GC是集中在机房中&#xff0c;所以当有MEC后&#xff0c;就可以把MEC下发到基站旁边&#xff0c;这样减少端到端的延时。便于实现5G中不同场景的实…