Mybatis的使用快速入门

news2024/11/18 15:40:15

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 mapper
        PUBLIC "-//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 configuration
  PUBLIC "-//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.coloradmin.cn/o/1507906.html

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

相关文章

仿牛客网项目---项目总结

本篇文章是对整个项目的一个总结。下面这张图要好好理解。 整个项目都是构建在SpringBoot之上的&#xff0c;所以把它画到最底下&#xff0c;其它技术依托在springboot之上。但是springboot并不是技术的核心&#xff0c;而只是起到了一个辅助的作用&#xff0c;它的作用仅仅是降…

2024自动化测试入门分析!

1、回归到具体的测试本质工作 产品质量很难孤立的去看&#xff0c;不管是自动化测试还是业务测试&#xff0c;最终的目的都是为了产 品质量服务&#xff0c;从而打造很酷很好的产品来赋能客户 测试的工作就是质量管理以及测试效率的提升。质量管理是一个比较大的话题&#x…

项目管理软件:如何确保项目启动顺利?

对所有项目经理来说&#xff0c;了解如何启动项目是最关键的技能之一。项目都是从小事开始&#xff0c;逐渐发展为更大型、更复杂的。好的开始是成功的一半&#xff0c;对项目管理来说更是如此。 启动项目的 10 个简单步骤 即使是最复杂的项目&#xff0c;也可以分解成简单的…

亚马逊、速卖通卖家自养号测评细节需要掌握的哪几点?

亚马逊&#xff0c;跨境电商的巨头&#xff0c;早已成为业界的热门话题。如今&#xff0c;越来越多的卖家渴望在亚马逊的舞台上崭露头角&#xff0c;这也使得市场竞争愈发激烈。在亚马逊的丛林中&#xff0c;Review成为影响卖家命运的关键因素。它不仅影响亚马逊对卖家账号的评…

关于DSP C6678的另一种引导启动方法

之前通过自启动已经将C6678的Core0和Core1都实现了启动。方法在之前的文章里面已经提及&#xff1a; C6678 EMIF NOR FLASH自启动方法-CSDN博客 这种启动方式是Core0和Core1工程里面都加了boot.asm&#xff0c;通过EMIF NOR FLASH特性&#xff0c;每个核自动搬移各个字段&…

[VulnHub靶机渗透] Nullbyte

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

路由器动态路由配置

本博客为观看湖科大的教书匠系列计算机网络视频的学习笔记。 静态路由选择动态路由选择采用人工配置的方式给路由器添加网络路由、默认路由和特定主机路由等路由条目。路由器通过路由选择协议自动获取路由信息。静态路由选择简单、开销小&#xff0c;但不能及时适应网络状态(流…

灭火新选择:便携式森林灭火泵,轻巧而强大

随着人类对自然环境的破坏&#xff0c;森林火灾频发&#xff0c;给生态环境和人民生命财产安全带来严重威胁。为了有效地应对森林火灾&#xff0c;恒峰研发出了一种便携式森林灭火泵&#xff0c;它将成为森林火灾的守护神。本文将详细介绍便携式森林灭火泵的特点、优势以及使用…

ORACLE RAC数据库压力测试(swingbench)

------------------------------------------------------------------- 欢迎关注作者 墨天伦:潇湘秦的个人主页 - 墨天轮 CSDN:潇湘秦-CSDN博客 公众号:潇湘秦的DBA之路 ------------------------------------------------------------------- 为了验证跑在虚拟机上的or…

WhatsApp模板信息申请大全:更好地触达WhatsApp客户

按照WhatsApp通话规则&#xff0c;用户主动和我们开始聊天后的24小时内&#xff0c;我们也是可以通过WhatsApp无限次数地与对方进行自定义消息对话&#xff0c;并且只计为一次服务型会话费用。 但是如果超过了24小时&#xff0c;我们还希望可以继续联系对方的话&#xff0c;只…

1688 API接口在数据分析与营销决策中的应用探索

在当今数字化快速发展的时代&#xff0c;数据分析与营销决策已成为企业运营中不可或缺的重要环节。而1688 API接口&#xff0c;作为阿里巴巴旗下的一个强大的数据交互平台&#xff0c;为企业在数据分析与营销决策方面提供了丰富的数据源和灵活的操作方式。本文将深入探讨1688 A…

每日OJ题_路径dp⑤_力扣64. 最小路径和

目录 力扣64. 最小路径和 解析代码 力扣64. 最小路径和 64. 最小路径和 难度 中等 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示…

Docker常用基础指令

目录 1 前言 2 常用指令 2.1 获取帮助 2.2 拉取镜像到本地 2.3 对本地镜像进行打包 2.4 对本地镜像的删除 2.5 通过tar包加载本地镜像 2.6 查看所有镜像 2.7 创建新的容器 2.8 查看容器 2.9 停止容器运行 2.10 运行容器 2.11 删除容器 2.12 查看容器日志 2.13 进…

应用资料 | 电动工具直流调速专用集成电路GS069

01 产品简介 GS069是CMOS工艺、电动工具直流调速专用集成电路。具有电源电压范围宽、功耗小、抗干扰能力强等特点。 应用范围&#xff1a;广泛应用于各种电动工具。 02 产品基本参数 03 产品应用 1、应用图&#xff1a; 2、测试参数&#xff1a;&#xff08;VCC9V&…

智慧公厕:提升城市形象与民生满意度的智能解决方案

智慧公厕是指通过智能化设备和系统&#xff0c;实现公共厕所的智能管理和智慧化服务的一种先进解决方案。它不仅可以紧跟政策要求&#xff0c;提升城市的整体形象&#xff0c;还能提供舒适的用厕环境&#xff0c;改善市民群众的生活品质。本文以智慧公厕源头实力厂家广州中期科…

墨水屏电子桌牌选购攻略:打造企业现代形象!

随着科技的不断发展&#xff0c;墨水屏电子会议桌牌作为一种新型的会议辅助工具&#xff0c;不仅能够提升会议效率&#xff0c;还能展现企业的现代化形象。然而&#xff0c;面对市场上琳琅满目的产品&#xff0c;企业如何选购合适的墨水屏电子会议桌牌呢&#xff1f;下面&#…

Linux快速入门学习-2 Linux安装环境准备

文章目录 Linux发展前景及就业形势Windows操作系统简介硬盘分区简介Linux安装环境准备Linux系统安装图解 Linux发展前景及就业形势 权威部门统计&#xff0c;未来几年内我国软件行业的从业机会十分庞大&#xff0c;中国每年对IT软件人才的需求将达到200万人左右。而对于Linux专…

Css基础——Css的定位

1、定位模式 1.1、静态定位 static 1.2、相对定位 relative postion:relative&#xff1a; 1、是相对于自己本来的位置进行的边偏移 2、它不会脱标&#xff0c;仍然会在它文件流时候应有的位置 html&#xff1a; <!DOCTYPE html> <html lang"en">&l…

【编程语言】C#语言相关知识

前言&#xff1a;我们在游戏开发的过程中&#xff0c;往往会通过游戏引擎结合编程语言的方式&#xff0c;来作为项目开发的手段。因此&#xff0c;了解相关语言的特性、发展和前沿知识&#xff0c;就显得相当必要。笔者这里结合自身的工作经验和学习心得&#xff0c;用简洁通俗…

南蛮图腾的题解

目录 原题描述&#xff1a; 题目描述 输入格式 输出格式 样例 Input 1 Output 1 Input 2 Output 2 Input 3 Output 3 样例解释 数据范围 主要思路&#xff1a; ACCode: 作者的灵魂拷问&#xff1a; 原题描述&#xff1a; 时间限制: 1000ms 空间限制: 524288kB 题目…