Mybatis的使用快速入门

1. 数据库准备

假设目前存在以下数据库表。

CREATE TABLE `t_emp`(emp_id INT AUTO_INCREMENT,emp_name CHAR(100),emp_salary DOUBLE(10,5),PRIMARY KEY(emp_id)
);

2. 依赖导入

pom.xml

<dependencies><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version></dependency><!-- MySQL驱动 mybatis底层依赖jdbc驱动实现,本次不需要导入连接池,mybatis自带! --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.25</version></dependency><!--junit5测试--><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.3.1</version></dependency>
</dependencies>

3. 实体类准备

public class Employee {private Integer empId;private String empName;private Double empSalary;//getter | setter
}

4. 准备Mapper接口和MapperXML文件

MyBatis 框架下,SQL语句编写位置发生改变,从原来的Java类,改成XML或者注解定义!

推荐在XML文件中编写SQL语句,让用户能更专注于 SQL 代码,不用关注其他的JDBC代码。

一般编写SQL语句的文件命名:XxxMapper.xml 。其中 Xxx一般取表名。

Mybatis 中的 Mapper 接口相当于以前的 Dao。但是区别在于,Mapper 仅仅只是建接口即可,我们不需要提供实现类,具体的SQL写到对应的Mapper文件,该用法的思路如下图所示:

4.1 准备Mapper接口

/*** t_emp表对应数据库SQL语句映射接口!*    接口只规定方法,参数和返回值!*    mapper.xml中编写具体SQL语句!*/
public interface EmployeeMapper {/*** 根据员工id查询员工数据方法* @param empId  员工id* @return 员工实体对象*/Employee selectEmployee(Integer empId);}

4.2 准备mapper.xml

位置: resources/mappers/EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace等于mapper接口类的全限定名,这样实现对应 -->
<mapper namespace="org.kkk.mapper.EmployeeMapper"><!-- 查询使用 select标签id = 方法名resultType = 返回值类型标签内编写SQL语句--><select id="selectEmployee" resultType="org.kkk.pojo.Employee"><!-- #{empId}代表动态传入的参数,并且进行赋值 -->select emp_id empId,emp_name empName, emp_salary empSalary from t_emp where emp_id = #{empId}</select>
</mapper>

注意:

  • 接口定义的方法名和SQL的id一致
  • 方法返回值和resultType一致
  • 方法的参数和SQL的参数一致
  • 接口的全类名和映射配置文件的名称空间一致

5. 准备MyBatis配置文件

mybatis框架配置文件: 数据库连接信息,性能配置,mapper.xml配置等。

习惯上命名为 mybatis-config.xml,这个文件名仅仅只是建议,并非强制要求。将来整合 Spring 之后,这个配置文件可以省略。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><!-- environments表示配置Mybatis的开发环境,可以配置多个环境,在众多具体环境中,使用default属性指定实际运行时使用的环境。default属性的取值是environment标签的id属性的值。 --><environments default="development"><!-- environment表示配置Mybatis的一个具体的环境 --><environment id="development"><!-- Mybatis的内置的事务管理器 --><transactionManager type="JDBC"/><!-- 配置数据源 --><dataSource type="POOLED"><!-- 建立数据库连接的具体信息 --><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/mybatis-example"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!-- Mapper注册:指定Mybatis映射文件的具体位置 --><!-- mapper标签:配置一个具体的Mapper映射文件 --><!-- resource属性:指定Mapper映射文件的实际存储位置,这里需要使用一个以类路径根目录为基准的相对路径 --><!--    对Maven工程的目录结构来说,resources目录下的内容会直接放入类路径,所以这里我们可以以resources目录为基准 --><mapper resource="mappers/EmployeeMapper.xml"/></mappers></configuration>

到此,MyBatis我们就操作完成了,接下来可以运行测试代码进行测试了。测试代码要使用MyBatis提供的API,过程较为复杂,在之后的spring boot会对其进行封装,便于我们开发者进一步的使用。因此,测试代码在这里就不展示了。

6.总结

  • 在实际应用场景中,数据库及数据是现成的,不需要我们进行准备。
  • 我们只需要准备实体类、Mapper接口、MapperXML文件以及MyBatis的配置文件。
  • 实体类的作用是可以让MyBatis将查询结果自动映射为一个实体类对象,便于我们操作。
  • 在mapper接口中,我们只需要定义操作方法,不需要编写实现类,MyBatis会自动完成实现类。
  • MapperXML文件是我们书写sql语句的地方。
    • 命名空间赋值为接口的全类名,方便MyBatis定位到该接口。
    • sql的id要与接口中的方法名相同,MyBatis才可以知道该方法执行的是哪条sql语句。

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

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

相关文章

windows下pytorch的dataloader多进程(num_workers)问题,为何num_workers的值只能为0?

问题背景介绍 本人是windows系统&#xff0c;在使用torch.utils.data.Dataloader加载torchvision中的数据集时&#xff0c;将其中的形参num_workers设置为了大于0的数&#xff0c;然后出现以下错误。 原因 在 Windows 系统下&#xff0c;num_workers 参数在使用 PyTorch 的 t…

CleanMyMac X4.15具有哪些功能和特点?

CleanMyMac X具有许多其他功能和特点&#xff0c;以下是一些主要亮点&#xff1a; 系统清理&#xff1a;它能够深入扫描macOS系统&#xff0c;识别并清除各种垃圾文件&#xff0c;如缓存、日志、无用的语言文件等。这不仅有助于释放硬盘空间&#xff0c;还可以提高系统的整体性…

Aigtek电压放大器设计流程是什么样的

电压放大器是电子电路中常见的一种模块&#xff0c;用于放大输入信号的电压幅值。在实际设计过程中&#xff0c;需要考虑多个因素&#xff0c;包括放大器的增益、带宽、稳定性和功耗等。下面将介绍电压放大器设计的一般流程。 确定需求&#xff1a;首先需要明确设计的目标和需求…

如何提高内存和cpu使用率呢?-Linux类资源

最近公司项目上线时&#xff0c;红蓝线巡检时&#xff0c;部分服务器因配置高但使用率低而需要降级。 为了避免降级&#xff0c;如何增加内存和CPU使用率&#xff1f; 这可以通过脚本来实现。 当前服务器操作系统版本&#xff1a;-7_5。 连接服务器后&#xff0c;登录账号。 …

c# 使用 Oxyplot 创建和绘制 ContourSeries

我有一个 WPF 应用程序&#xff0c;我需要在其中可视化 y y(x1, x2)&#xff0c;其中 x1、x2 是线性坐标。我可以使用 Oxyplot 中的 HeatMapSeries 来做到这一点&#xff0c;但是当我想在同一窗口中绘制两组数据时&#xff0c;热图不是合适的工具。几个轮廓系列会更好。 现在&…

LLM - 大语言模型(LLM) 概述

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/136617643 大语言模型(LLM, Large Language Model)的发展和应用是一个非常广泛的领域&#xff0c;涉及从早期的统计模型到现代基于深度学…

一文读懂:公网IP地址证书

公网IP证书是一种SSL证书&#xff0c;用于验证和确认特定的公网IP地址是否实际属于申请者。如果验证通过&#xff0c;证书颁发机构将向该IP地址持有人颁发一个以IP地址为主题的SSL证书。使用公网IP证书可以有效提升IP身份的辨识度&#xff0c;减少网站链接被假冒的风险&#xf…

raid0、raid1、raid5、raid10选哪个?一文给你答案!

下午好&#xff0c;我的网工朋友。 关于磁盘阵列的用法&#xff0c;总有朋友对其用途与功能一知半解&#xff0c;很容易弄混。 而我们在做监控项目存储时&#xff0c;经常会用到磁盘阵列。 什么是磁盘阵列&#xff1f;为什么要做磁盘阵列&#xff1f;用什么样的磁盘阵列合适…

地理数据可视化:使用echarts实现地图可视化功能

前言 地图是一种直观而强大的数据可视化工具&#xff0c;能够帮助我们更好地理解地理分布和区域间的差异。在本文中&#xff0c;我们将探讨如何使用 echarts 实现地图功能&#xff0c;展示各个区域的数据分布和趋势。 一、基础使用 <template><div class"chartB…

【JAVA】Collections.sort()方法详解

一、简介 Collections.sort() 是 Java 集合框架&#xff08;Java Collections Framework&#xff09;中的一个静态方法&#xff0c;用于对列表&#xff08;List&#xff09;中的元素进行排序。此方法利用了 Java 的泛型机制&#xff0c;可以很方便地对各种类型的列表进行排序。…

USB协议学习(三)大容量存储设备SCSI协议分析

笔者来简单介绍一下SCSI得协议命令 1、SCSI协议认识 SCSI&#xff1a;Small Computer System Interface&#xff0c;用于计算机外部设备得接口标准&#xff0c;定义了与外部设备得一套协议。SCSI标准协议族支持很多钟SCSI设备&#xff0c;像盘&#xff0c;打印机&#xff0c;扫…

2024年斋月已开始,分享邮件祝福模板

今天斋月正式开始了&#xff0c;这个是穆斯林国家最重要的节日了。斋月期间穆斯林国家的政府以及企业都会调整生活以及工作时间和节奏&#xff0c;不管是海关、港口、企业还是政府机构都会受到影响&#xff0c;有的甚至彻底停止&#xff0c;所以大家跟穆斯林客户做生意的话&…