当前位置: 首页 > news >正文

MyBatis 之基础概念与框架原理详解

目录

1. 📚Mybatis介绍

1.1. 🧩框架

1.2. 🔗ORM框架

1.3. 🚀MyBatis

2. 🔧MyBatis 入门

2.1. 🏗️环境搭建

2.1.1. 新建空项目

2.1.2. 创建Maven工程

2.1.3. 在pom.xml中的 标签中引入依赖

2.1.4. 创建mybatis核心配置文件SqlMapConfig.xml

2.1.5. 在resource下创建log4j.properties,让控制台打印SQL语句

2.1.6. 根据数据库表创建实体类

2.2. 🗂️创建持久层接口和映射文件

2.2.1. 在java目录创建持久层接口

2.2.2. 在resource目录创建映射文件

2.2.3. 将映射文件配置到mybatis核心配置文件SqlMapConfig.xml中

2.2.4. 编写映射文件的注意事项

2.2.5. 测试持久层接口方法

3. 🔍总结


💡【开发哲学共勉】

MyBatis 用半自动化的 ORM 魔法,将数据库表织成对象世界的经纬,让 SQL 操作如调用方法般丝滑,从此告别 JDBC 的繁琐,让开发者在业务海洋中轻装上阵

🎉 前言

在之前操作数据库时,都会用到JDBC,但是像这样写代码,都会有些麻烦,因为要写的代码很多,层次也多

MyBatis的出现,让我们程序员只需要写SQL代码即可操作数据库,让我们的开发效率变得更高效,那现在来一起开启MyBatis的学习之旅吧~   (๑•̀ㅂ•́)و✧

个人主页:艺杯羹 🌿

系列专栏:MyBatis🚀

1. 📚Mybatis介绍

Mybatis是一个ORM框架,现在分别介绍一下

1.1. 🧩框架

框架简单来说,就是一个半成品软件,在实际的开发中,对于那些简单可复用的代码,可以提取出成一个框架,直接使用这个框架就可以了

框架的好处:

  1. 节约时间
  2. 可以让程序员更专注于业务层,而非只专注于技术层

1.2. 🔗ORM框架

ORM(Object Relationl Mapping),对象关系映射
也就是用于 数据库 和 类对象 之间的映射
ORM框架就是用来代替之前的JDBC操作的,这样就大大的提高了开发效率

1.3. 🚀MyBatis

MyBatis是一个半自动化的ORM框架,MyBatis是对JDBC的一个封装,使用它,就不用再写JDBC代码了,直接操作SQL语句即可

提到了半自动话,当然还有全自动话
全自动化ORM框架 --- Hibernate
因为它的学习成本高和不灵活导致现在很少有企业使用

2. 🔧MyBatis 入门

2.1. 🏗️环境搭建

这里先按步骤搭建一下环境

2.1.1. 新建空项目

2.1.2. 创建Maven工程


2.1.3. 在pom.xml中的<dependencies>标签中引入依赖

<dependencies><!--  mybatis  --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><!--  mysql驱动包  --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency><!--  junit  --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency><!--  log4j  --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency></dependencies>

2.1.4. 创建mybatis核心配置文件SqlMapConfig.xml

这个核心配置文件是放在resources资源包下

再将以下内容复制到核心配置文件中

<?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 default="mysql"><environment id="mysql"><!--  事务类型  --><transactionManager type="JDBC"></transactionManager><!--  数据源  --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql:///mybatis"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

2.1.5. 在resource下创建log4j.properties,让控制台打印SQL语句


将以下内容复制进去

# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
log4j.rootCategory=debug, CONSOLE# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
#log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[%d{MM/dd HH:mm:ss}] %-6r [%15.15t] %-5p %30.30c %x - %m\n

2.1.6. 根据数据库表创建实体类

这里提供一个数据库表,大家可以自己直接复制过去用,或者是用自己的

CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(255),sex VARCHAR(255),address VARCHAR(255)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

2.2. 🗂️创建持久层接口和映射文件

2.2.1. 在java目录创建持久层接口


结构还是要有的,在mapper包下创建

public interface UserMapper {List<User> findAll();
}

2.2.2. 在resource目录创建映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace  要和对应的 Mapper 接口的全限定名一致-->
<mapper namespace="com.yibeigen.mapper.UserMapper"><!-- select 查询 --><!--resultType 是返回值类型 --><!--id 是方法名 --><select id="findAll" resultType="user">select * from user</select> 
</mapper>

2.2.3. 将映射文件配置到mybatis核心配置文件SqlMapConfig.xml中

<!-- 注册映射文件 -->
<mappers><mapper resource="com/yibeigen/mapper/UserMapper.xml"></mapper>
</mappers>

2.2.4. 编写映射文件的注意事项

  1. 映射文件要和接口名称相同
  2. 映射文件要和接口的目录结构相同
  3. 映射文件中的属性
    1. namespace属性写接口全名

    2. id属性是接口的方法名

    3. resultType属性是接口的返回值

    4. parameterType属性是接口方法的参数类型

    5. resultTypeparameterType属性要写全类名
      如果是集合类型,就写泛型的全类名

2.2.5. 测试持久层接口方法

和Maven的操作一样,在test包下创建测试方法

@Test
public void testFindAll() throws Exception {// (1)读取核心配置文件InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");// (2)创建SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();// (3)SqlSessionFactoryBuilder对象获取SqlSessionFactory对象SqlSessionFactory factory = builder.build(is);// (4)SqlSessionFactory对象获取SqlSession对象SqlSession session = factory.openSession();// (5)SqlSession对象获取代理对象UserMapper userMapper = session.getMapper(UserMapper.class);// (6)代理对象执行方法List<User> all = userMapper.findAll();all.forEach(System.out::println);// (7)释放资源session.close();is.close();
}

因为我输出是直接输出对象,那么这个输出和你重写的tostring方法有关
这里就先让大家感受一下这个MyBatis大致是如何操作的(๑•̀ㅂ•́)و✧

3. 🔍总结

到此MyBatis的介绍与快速入门就讲到这里
如果觉得还可以的话,帮忙点赞,关注呢,万分感谢(๑•̀ㅂ•́)و✧

http://www.lryc.cn/news/579476.html

相关文章:

  • RabbitMQ 通过HTTP API删除队列命令
  • 【如何判断Linux系统是Ubuntu还是CentOS】
  • Centrifugo 深度解析:构建高性能实时应用的开源引擎
  • 记忆翻牌记忆力小游戏流量主微信小程序开源
  • 网创vip课程视频教程、付费网络课程以及网赚培训,学习引流、建站、赚钱。8个T的全套课程
  • 【2.3 漫画SpringSecurity - 守护应用安全的钢铁卫士】
  • ATE FT ChangeKit学习总结-20250630
  • Easy-excel监听器中对批量上传的工单做错误收集
  • Redisson使用示例
  • 请求未达服务端?iOS端HTTPS链路异常的多工具抓包排查记录
  • 【Bug Recod】更新中...
  • Day50
  • 一文详解Character AI:实用指南+ ChatGPT、Gemini对比分析
  • contenteditable网页富文本编辑无法选中图片
  • Swift 的基础设计哲学是 “通过模块化组合实现安全与效率的平衡“,就像用标准化工业零件建造摩天大楼
  • 一台香港原生ip站群服务器多少钱?
  • 如何在Ubuntu上检查MySQL是否启动并放开3306端口
  • C++笔记-位图和布隆过滤器
  • P1155 [NOIP 2008 提高组] 双栈排序
  • 李宏毅机器学习笔记——梯度下降法
  • 映射阿里云OSS(对象存储服务)
  • 百度文心智能体平台x小米应用商店:联手打造行业首个智能体与应用市场跨端分发模式
  • webrtc-streamer视频流播放(rstp协议h264笔记)
  • KDD 2025 | 地理定位中的群体智能:一个多智能体大型视觉语言模型协同框架
  • Go应用容器化完全指南:构建最小化安全镜像的终极实践
  • I/O 线程 7.3
  • VTK中自定义双组分输入最大值滤波
  • 基于spark的北京房价数据分析及价格预测
  • npm 命令入门指南(前端小白版)
  • 以太坊 Legacy 交易和 EIP-1559 交易