news 2026/7/8 3:22:33

javaWeb从入门到进阶(MyBatis)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
javaWeb从入门到进阶(MyBatis)

MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
官网: https://mybatis.org/mybatis-3/zh/index.html

使用Mybatis查询所有用户数据
1.准备工作(创建springboot工程、数据库表user、实体类User)

2.引入Mybatis的相关依赖,配置Mybatis(数据库的连接信息)
3.编写SQL语句(注解/XML)

第一步准备工作

数据库表和实体类(javabean)

之后在application.properties类中配置数据库连接信息

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

之后创建接口Mapper

并在前面加上@Mapper,这样在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理。

在单元测试中,我们要想用这个接口的对象,肯定不能通过new一个接口,但是上面我们通过@Mapper,这样在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理,已经成为IOC容器中的bean了,在单元测试中,我们可以通过依赖注入的方式把这个bean对象注入进来。

JDBC

JDBC:
(Java DataBase Connectivity),就是使用Java语言操作关系型数据库的一套API。

sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

原始的JDBC

1.开发效率低下

  • 80%的时间在写重复的JDBC模板代码

  • 只有20%的时间在写业务逻辑

2.代码维护困难

  • SQL分散在Java代码各处

  • 数据库变更需要修改大量文件

  • 难以进行单元测试

3.容易产生bug

  • 资源泄露(忘记关闭连接)

  • SQL注入漏洞

  • 类型转换错误

  • 事务管理错误

4.性能瓶颈

  • 频繁创建数据库连接

  • SQL无法预编译和重用

  • 没有缓存机制

尽管有这么多缺点,原始JDBC在以下场景仍有价值:

  1. 性能要求极高的场景:需要精细控制SQL执行

  2. 极简项目:小工具、原型验证

  3. 学习目的:理解底层原理

  4. 特殊数据库操作:存储过程、批量处理等

原始的JDBC就像是"手写汇编语言"操作数据库,虽然灵活但效率低下。MyBatis等框架就像是"高级编程语言",通过封装和抽象,让开发者能更专注于业务逻辑而不是底层细节。

对比

数据库连接池
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏

优势
资源重用
提升系统响应速度
避免数据库连接遗漏

数据库连接池
标准接口:DataSource
官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。
功能:获取连接
Connection getConnection () throws SQLException;

切换Druid数据库连接池
官方地址: https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
<dependency>
<groupld>com.alibaba</groupld>
<artifactid>druid-spring-boot-starter</artifactid>
<version>1.2.8</version>
</dependency>

pom.xml

lombok


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

添加依赖

<dependency>
<groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 13:56:21

【技术研究】功能解锁技术的双路径实现方案

【技术研究】功能解锁技术的双路径实现方案 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 问题诊断&#xff1a;软件权限控制机制分析 现代应…

作者头像 李华
网站建设 2026/7/1 19:34:33

如何一键复制网页LaTeX公式到Word?超实用的公式转换工具推荐

如何一键复制网页LaTeX公式到Word&#xff1f;超实用的公式转换工具推荐 【免费下载链接】LaTeX2Word-Equation Copy LaTeX Equations as Word Equations, a Chrome Extension 项目地址: https://gitcode.com/gh_mirrors/la/LaTeX2Word-Equation 你是否曾遇到这样的尴尬…

作者头像 李华
网站建设 2026/6/30 21:52:17

揭秘Xenos:Windows DLL注入神器的进阶指南

揭秘Xenos&#xff1a;Windows DLL注入神器的进阶指南 【免费下载链接】Xenos Windows dll injector 项目地址: https://gitcode.com/gh_mirrors/xe/Xenos 你是否在寻找一款功能全面且操作便捷的Windows DLL注入工具&#xff1f;Xenos作为基于Blackbone库开发的专业级注…

作者头像 李华
网站建设 2026/7/1 9:21:10

如何解决OneMore Navigator窗口管理难题:让FancyZones布局更高效

如何解决OneMore Navigator窗口管理难题&#xff1a;让FancyZones布局更高效 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 问题引入&#xff1a;多窗口协作的痛点 …

作者头像 李华
网站建设 2026/7/1 10:35:19

Zotero Duplicates Merger 3大核心功能终极指南

Zotero Duplicates Merger 3大核心功能终极指南 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger Zotero Duplicates Merger是一款专为Zotero文献…

作者头像 李华
网站建设 2026/7/1 9:21:11

手把手教你看懂毛球修剪器电路图(家用版)

你提供的这篇《手把手教你看懂毛球修剪器电路图&#xff08;家用版&#xff09;》原文内容扎实、逻辑清晰、技术细节丰富&#xff0c;已具备相当高的专业水准。但作为一篇面向 工程师与进阶电子爱好者 的“教学型技术博文”&#xff0c;它在 可读性、传播力、人设感与工程现…

作者头像 李华