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;传统的…

每日一题 427. 建立四叉树

427. 建立四叉树 class Solution { public:Node* construct(vector<vector<int>>& grid) {int n grid.size();return dfs(grid,0,0,n);}bool allSame(vector<vector<int>>& grid, int x,int y,int len){int val grid[x][y];for(int i0;i<…

关于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;如果索引出的数与下标不相等了&…

【ElasticSearch】 Java API Client 7.17文档

​ 本文章内容根据 Elastic Search Java API Client 7.17 版本官方文档 内容翻译而来&#xff0c;用于方便后续学习翻阅 序言 这是适用于 Elasticsearch 的官方 Java API Client 文档。该客户端针对所有 Elasticsearch API 提供强类型的请求和响应。 功能 所有 Elasticsearc…

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;评价效果好等优点…

Windows 下本地 Docker RAGFlow 部署指南

Windows 下本地 Docker RAGFlow 部署指南 环境要求部署步骤1. 克隆代码仓库2. 配置 Docker 镜像加速(可选)3. 修改端口配置(可选)4. 启动服务5. 验证服务状态6. 访问服务7. 登录系统8. 配置模型8.1 使用 Ollama 本地模型8.2 使用在线 API 服务9. 开始使用10. 常见问题处理端…

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

第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; 即可看到变…