MyBatis框架基础学习及入门案例(2)

目录

一、数据库建表(tb_user)以及添加数据。

(1)数据库与数据表说明。

(2)字段与数据说明。

二、创建模块(或工程)、导入对应所需依赖坐标。

三、编写MyBatis核心主配置文件。(解决JDBC中"硬编码"问题)

(1)resources目录下新建mybatis-config.xml文件。

(2)最外层标签。完善内层标签、。

(3)加载外部属性文件。(如:db.properties)

(4)结合创建的映射文件。最终MyBatis核心主配置文件的全部内容。

四、编写书写SQL语句的映射文件。(mapper包下的.XML文件)

(1)新建UserMapper.xml文件。

(2)最外层标签。属性namespace。

(3)内层常用标签。

(4)最终UserMapper配置文件的内容。

五、正式编码。

(1)定义对应(表tb_user)的POJO(实体)类。

(2)测试类中加载MyBatis核心主配置文件。(获取SqlSessionFactory对象)

(3)获取SqlSession对象、执行SQL语句。(selectList()方法)

(4)释放资源。

(5)测试类运行结果。


  • 本篇博客的主要内容是完成一个简单的MyBatis入门案例。

一、数据库建表(tb_user)以及添加数据。

(1)数据库与数据表说明。
  • 数据库:mybatis01、数据表:tb_user。

(2)字段与数据说明。
  • 主键:uid。
  • 其他字段:username、password、gender、addr。
  • 添加几条测试数据即可。

二、创建模块(或工程)、导入对应所需依赖坐标。

  • 可前往MyBatis官网学习入门。mybatis – MyBatis 3 | 入门


  • 其他所需的依赖坐标。
 <dependencies><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><!--连接数据库——MySQL驱动--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version></dependency><!--单元测试坐标--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency></dependencies>

三、编写MyBatis核心主配置文件。(解决JDBC中"硬编码"问题)

(1)resources目录下新建mybatis-config.xml文件。
  • 注意:没有这2个快捷创建选项需要自己手动配置模板。(不像spring配置文件自动有)
  • 我这里选择的是mybatis-config。(代表新建MyBatis核心主配置文件)(IDEA手动设置好的模板)


  • 也可以直接手动创建.XML文件。然后去官网复制粘贴。


  • MyBatis核心主配置文件的头声明如下。(与映射文件是不同的)


(2)最外层标签<configuration>。完善内层标签<environments>、<mappers>。
  • 注意标签<environments>内<environment>标签内的所有内容就是一个模板。不需要记忆复制粘贴后,稍加修改数据库连接信息即可
  • 所使用的模板中的“development”代表了MyBatis的默认与具体的运行环境是开发环境配置
  • 其次指定了事务管理的方式为 JDBC 事务管理器。
  • 定义了数据源的类型为“POOLED”,即使用连接池来管理数据库连接。

(3)加载外部属性文件。(如:db.properties)
  • 主要包含数据库连接的配置信息。(如注册驱动、用户名、密码、URL 等)

  • 这样可以在MyBatis主配置文件中通过${}占位符引用这些属性值,便于维护和修改。


  • value属性对应的值使用${}占位符引用。


(4)结合创建的映射文件。最终MyBatis核心主配置文件的全部内容。
  • 注意<mapper>标签的resource属性是相对于类路径。所以直接写与主配置文件路径平级即可。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--MyBatis主配置文件的根标签-->
<configuration><properties resource="db.properties"></properties><environments default="development"><!-- 可以配置多个environment --><!--这里指定了默认的运行环境为development,即开发环境--><environment id="development"><!-- 使用jdbc事务管理--><transactionManager type="JDBC"/><!--配置数据库连接信息--><dataSource type="POOLED"><property name="driver" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--所有映射文件的路径--><mappers><!--加载书写SQL的映射文件--><mapper resource="UserMapper.xml"></mapper></mappers></configuration>

四、编写书写SQL语句的映射文件。(mapper包下的.XML文件)

(1)新建UserMapper.xml文件。
  • 一般xxx的映射文件的命名方式为:“实体类名称+Mapper”组成。

  • 注意我这里创建的方式与创建MyBatis主核心配置文件的方式一样。(IDEA手动设置好的模板)
  • 选择mybatis-mapper。(前面提到,映射文件的头声明与MyBatis主核心配置文件不一致)


  • 映射文件的头声明默认自动生成。


  • 当然也可以手动去官网复制粘贴,再修改即可。


(2)最外层标签<mapper>。属性namespace。
  • 单输入一个"<"就知道其最外层标签有几个、分别是啥。


  • namespace:命名空间。作用就是对sql进行分类管理。(比如有很多个xxxMapper.xml其中有相同的id。而命名空间就可以再以区分)

  • 注意:使用mapper代理方法开发时。namespace需要特殊设置!!


(3)内层常用标签。
  • <select>、<update>、<delete>、<insert>、<resultMap>。
  • <resultMap>很重要,后面再学习
  • <select>、<update>、<delete>、<insert>就是对应的查询、更新、删除、插入。

  • id就是唯一标识该查询的SQL语句
  • resultType就是查询返回的结果。这里查询所有用户当然是返回的数据包装成一个一个实体类(User)对象。所以这就需要有对应的实体类(User)。


(4)最终UserMapper配置文件的内容。
  • 这里的namespace="test"。供测试使用。
  • 后面的学习通常都是:namespace="接口的全限定名"。接口中就有对应的抽象方法。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="test"><select id="selectAll" resultType="com.fs.pojo.User">select * from tb_user</select>
</mapper>

五、正式编码。

(1)定义对应(表tb_user)的POJO(实体)类。
  • 注意实体类的属性要与数据库字段一致。

  • 这里使用Lombok帮助快速开发。(不需要手动提供构造器、setter、getter、toString等方法)。
  • 导入Lombok对应依赖的坐标。


  • 在对应User实体类上使用注解@Data使Lombok生效。

package com.fs.pojo;import lombok.Data;@Data
public class User {private Integer uid ;private String username;private String password;private String gender;private String addr;
}

(2)测试类中加载MyBatis核心主配置文件。(获取SqlSessionFactory对象)


(3)获取SqlSession对象、执行SQL语句。(selectList()方法)
  • 查询单个或多条记录——>使用selectList()方法。返回的是一个集合。方法中传的参数为:namespace.id。(id为mapper映射文件中对应<select>标签唯一标识SQL的id
  • 查询单个记录——>使用selectOne()方法。


(4)释放资源。


(5)测试类运行结果。

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

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

相关文章

js小游戏---2048(附源代码)

一、游戏页面展示 开始游戏&#xff1a; 游戏结束&#xff1a; 二、游戏如何操作 通过监听键盘的操作&#xff0c;进行移动变化 键盘上下左右键控制页面中所有模块同时向键入的方向移动&#xff0c;如果有两块一样的方块&#xff0c;就进行合并&#xff0c;并且在键盘每操作…

美格智能AIMO智能体+DeepSeek-R1模型,AI应用的iPhone时刻来了

导语&#xff1a; 当AI大模型从云端下沉至终端设备&#xff0c;一场关于效率、隐私与智能化的革命悄然展开。作为全球领先的无线通信模组及解决方案提供商&#xff0c;美格智能凭借其高算力AI模组矩阵与端侧大模型部署经验&#xff0c;结合最新发布的AIMO智能体产品&#xff0…

C语言的灵魂——指针(1)

指针是C语言的灵魂&#xff0c;有了指针C语言才能完成一些复杂的程序&#xff1b;没了指针就相当于C语言最精髓的部分被去掉了&#xff0c;可见指针是多么重要。废话不多讲我们直接开始。 指针 一&#xff0c;内存和地址二&#xff0c;编址三&#xff0c;指针变量和地址1&#…

物业巡更系统助推社区管理智能化与服务模式创新的研究与应用

内容概要 在现代社区管理中&#xff0c;物业巡更系统扮演着至关重要的角色。首先&#xff0c;我们先来了解一下这个系统的概念与发展背景。物业巡更系统&#xff0c;顾名思义&#xff0c;是一个用来提升物业管理效率与服务质量的智能化工具。随着科技的发展&#xff0c;传统的…

关于CAN(FD)转以太网详细介绍

一、功能描述 CANFD 完全向下兼容 CAN &#xff0c;以下统称 CAN(FD) 。 SG-CAN(FD)NET-210 是一款用来把 CANFD 总线数据转为网口数据的设备。 网口支持 TCP Sever 、 TCP Client 、 UDP Sever 、 UDP Client 四种模式。 可以通过软件配置和 Web 网页配置。 两路…

用Python和PyQt5打造一个股票涨幅统计工具

在当今的金融市场中&#xff0c;股票数据的实时获取和分析是投资者和金融从业者的核心需求之一。无论是个人投资者还是专业机构&#xff0c;都需要一个高效的工具来帮助他们快速获取股票数据并进行分析。本文将带你一步步用Python和PyQt5打造一个股票涨幅统计工具&#xff0c;不…

Centos类型服务器等保测评整/etc/pam.d/system-auth

修改服务器配置文件/etc/pam.d/system-auth&#xff0c;但是&#xff0c;把一下配置放在password的配置第一行才会生效 执行命令&#xff1a;配置口令要求&#xff1a;大小写字母、数字、特殊字符组合、至少8位&#xff0c;包括强制设置root口令&#xff01; sed -i 14a pas…

At coder beginner contest 290AB

A12435 思路&#xff1a;只有4中情况:A1,A2翻转&#xff0c;其他正常&#xff0c;A2A3翻转其他正常.....为了下标与数字对应我开了6个空间&#xff0c;然后从1开始循环&#xff0c;到4截止&#xff0c;因为循环中有i1害怕数组越界&#xff0c;如果索引出的数与下标不相等了&…

Vue3 + TS 实现批量拖拽 文件夹和文件 组件封装

一、html 代码&#xff1a; 代码中的表格引入了 vxe-table 插件 <Tag /> 是自己封装的说明组件 表格列表这块我使用了插槽来增加扩展性&#xff0c;可根据自己需求&#xff0c;在组件外部做调整 <template><div class"dragUpload"><el-dial…

STM32完全学习——RT-thread在STM32F407上移植

一、写在前面 关于源码的下载&#xff0c;以及在KEIL工程里面添加操作系统的源代码&#xff0c;这里就不再赘述了。需要注意的是RT-thread默认里面是会使用串口的&#xff0c;因此需要额外的进行串口的初始化&#xff0c;有些人可能会问&#xff0c;为什么不直接使用CubMAX直接…

JVM深入学习(一)

目录 一.JVM概述 1.1 为什么要学jvm&#xff1f; 1.2 jvm的作用 1.3 jvm内部构造 二.JVM类加载 2.1类加载过程 2.2类加载器 2.3类加载器的分类 2.4双亲委派机制 三.运行时数据区 堆空间区域划分&#xff08;堆&#xff09; 为什么分区(代)&#xff1f;&#xff08…

Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题

一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中&#xff0c;我们常常会遇到各种有趣且具有挑战性的问题。今天&#xff0c;我们就来深入探讨一个在实际开发中较为常见的问题&#xff1a;当连续快速发送 Post 请求时&#xff0c;前端会弹出 “数据正在处理&#xff0c;请…

002-SpringBoot整合AI(Alibaba)

SpringBoot整合AI 一、引入依赖二、配置application.yml三、获取 api-key四、编写 controller五、起服务调用 一、引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><vers…

安宝特方案 | 智能培训:安宝特AR如何提升企业技能培训的效率与互动性

随着企业不断推进数字化转型&#xff0c;传统培训方式已无法满足现代企业对高效、灵活培训的需求。尤其在技术更新频繁、工艺流程复杂、员工流动性大的环境中&#xff0c;传统培训模式的局限性愈加明显。为了提升培训质量、降低培训成本&#xff0c;并帮助员工迅速掌握新技能&a…

【阅读笔记】基于整数+分数微分的清晰度评价算子

本文介绍的是一种新的清晰度评价算子&#xff0c;整数微分算子分数微分算子 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类&#xff1a;灰度梯度评价函数、频域函数和统计学函数&#xff0c;其中灰度梯度评价函数具有计算简单&#xff0c;评价效果好等优点…

【学习笔记】计算机网络(二)

第2章 物理层 文章目录 第2章 物理层2.1物理层的基本概念2.2 数据通信的基础知识2.2.1 数据通信系统的模型2.2.2 有关信道的几个基本概念2.2.3 信道的极限容量 2.3物理层下面的传输媒体2.3.1 导引型传输媒体2.3.2 非导引型传输媒体 2.4 信道复用技术2.4.1 频分复用、时分复用和…

linux设置mysql远程连接

首先保证服务器开放了mysql的端口 然后输入 mysql -u root -p 输入密码后即可进入mysql 然后再 use mysql; select user,host from user; update user set host"%" where user"root"; flush privileges; 再执行 select user,host from user; 即可看到变…

Midscene.js:重新定义UI自动化的新时代工具

前言 Midscene.js 是一个创新的、面向开发者的 UI 自动化解决方案&#xff0c;并通过人工智能技术简化自动化脚本的编写与维护。 它提供了三种核心方法——交互&#xff08;.ai, .aiAction&#xff09;、提取&#xff08;.aiQuery&#xff09;和断言&#xff08;.aiAssert&am…

【开源免费】基于Vue和SpringBoot的社区智慧养老监护管理平台(附论文)

本文项目编号 T 163 &#xff0c;文末自助获取源码 \color{red}{T163&#xff0c;文末自助获取源码} T163&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

从0到1:C++ 开启游戏开发奇幻之旅(一)

目录 为什么选择 C 进行游戏开发 性能卓越 内存管理精细 跨平台兼容性强 搭建 C 游戏开发环境 集成开发环境&#xff08;IDE&#xff09; Visual Studio CLion 图形库 SDL&#xff08;Simple DirectMedia Layer&#xff09; SFML&#xff08;Simple and Fast Multim…