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

ssm框架之mybatis框架讲解

1,Mybatis

1.1 Mybatis概述

1.1.1 Mybatis概念
  • MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发

  • MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github

  • 官网:https://mybatis.org/mybatis-3/zh/index.html

持久层:

  • 负责将数据到保存到数据库的那一层代码。

    以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装。

  • JavaEE三层架构:表现层、业务层、持久层

    三层架构在后期会给大家进行讲解,今天先简单的了解下即可。

框架:

  • 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
  • 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展

举例给大家简单的解释一下什么是半成品软件。大家小时候应该在公园见过给石膏娃娃涂鸦

如下图所示有一个石膏娃娃,这个就是一个半成品。你可以在这个半成品的基础上进行不同颜色的涂鸦
在这里插入图片描述

1.1.2 JDBC 缺点

下面是 JDBC 代码,我们通过该代码分析都存在什么缺点:
在这里插入图片描述

  • 硬编码

    • 注册驱动、获取连接

      上图标1的代码有很多字符串,而这些是连接数据库的四个基本信息,以后如果要将Mysql数据库换成其他的关系型数据库的话,这四个地方都需要修改,如果放在此处就意味着要修改我们的源代码。

    • SQL语句

      上图标2的代码。如果表结构发生变化,SQL语句就要进行更改。这也不方便后期的维护。

  • 操作繁琐

    • 手动设置参数

    • 手动封装结果集

      上图标4的代码是对查询到的数据进行封装,而这部分代码是没有什么技术含量,而且特别耗费时间的。

1.1.3 Mybatis 优化
  • 硬编码可以配置到配置文件
  • 操作繁琐的地方mybatis都自动完成

如图所示
在这里插入图片描述

1.2 Mybatis基本要素

1.2.1 mybati的核心对象
SqlSessionFactoryBuilder
SqlSessionFactory
SqlSession

这三个类是mybati的核心对象,它们之间存在如下关系
在这里插入图片描述
简单的讲就是:SqlSessionFactoryBuilder通过建造者模式构建SqlSessionFactory对象,而SqlSessionFactory可以通过openSession()方法获取SqlSession对象。
使用过程如下:

// 读取配置文件mybatis-config.xml
 InputStream config = Resources.getResourceAsStream("mybatis-config.xml");
 // 根据配置文件构建SqlSessionFactory
 SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);

SqlSessionFactory是每个MyBatis应用的核心
作用:创建SqlSession实例

openSession(boolean autoCommit)

在这里插入图片描述
SqlSession对象
包含了执行SQL所需的所有方法
非线程安全,不能共享
对应一次数据库会话,会话结束必须关闭

在这里插入图片描述

1.2.2 mybati配置文件讲解

在这里插入图片描述

配置properties元素

配置properties元素的两种方式
通过指定外部属性文件,如:database.properties

<properties  resource="database.properties" />

直接配置property子节点

<properties>
	<property  name="driver"  value="com.mysql.cj.jdbc.Driver" />
	<property  name="url"  value="jdbc:mysql://127.0.0.1:3306/……" />
	<property  name="user"  value="root" />
	<property  name="password"  value="123456" />
</properties>

若两种方式同时都用了,哪种方式生效?
在这里插入图片描述

settings元素

用来修改MyBatis运行时的行为方式
主要是MyBatis的一些全局配置属性的设置

<settings>  
	<!--是否启用延迟加载-->
	<setting name="lazyLoadingEnabled" value="false" />
	<setting name="logImpl" value="LOG4J" />  
</settings>

在这里插入图片描述

typeAliases元素

类型别名
在SQL映射文件中简化冗长的Java类名 有如下两种配置方式

<typeAliases>
	<typeAlias alias="info" type="com.dts.entity.Info"/>
</typeAliases>

在这里插入图片描述

<typeAliases>
        <package name="com.dts.entity" />
</typeAliases>
environments元素

environments元素
可以通过environment子元素节点配置MyBatis的多套运行环境
必须通过default属性指定其中一个为默认运行环境
在这里插入图片描述##### mappers元素
SQL映射文件定义SQL语句映射
需在配置中引用SQL映射文件

方式一:使用类资源路径获取资源
在这里插入图片描述
方式二:使用Mapper接口的包路径

在这里插入图片描述

相关文章:

  • 【力扣刷题实战】无重复的最长字串
  • ngx_url_t
  • C#入门学习记录(四)C#运算符详解:掌握算术与条件运算符的必备技巧+字符串拼接
  • PDFMathTranslate 安装、使用及接入deepseek
  • HarmonyOS Next中的弹出框使用
  • 如何针对大Excel做文件读取?
  • Rochchip --- 待机唤醒模式
  • TensorFlow深度学习实战(12)——词嵌入技术详解
  • 台式机电脑组装---电源
  • 重要重要!!fisher矩阵元素有什么含义和原理; Fisher 信息矩阵的形式; 得到fisher矩阵之后怎么使用
  • 尝试在软考67天前开始成为软件设计师--操作系统基本原理
  • 【Mybatis】Mybatis参数深入
  • 在C语言基础上学Java【Java】【一】
  • docker(1) -- centos镜像
  • C# | 超简单CSV表格读写操作(轻松将数据保存到CSV,并支持读取还原)
  • Android主流架构模式对比分析
  • 7-字符串
  • RabbitMQ 集群降配
  • 自定义对象处理请求参数
  • Vue3 + ECharts 数据可视化实战指南
  • 前四个月社会融资规模增量累计为16.34万亿元,比上年同期多3.61万亿元
  • 美国务卿鲁比奥将前往土耳其参加俄乌会谈
  • 中美大幅下调超100%关税,印巴四日“战争”复盘|907编辑部
  • 浙江首个核酸药谷落子杭州,欢迎订阅《浪尖周报》第23期
  • 重庆大学通报本科生发14篇SCI论文:涉事学生及其父亲被处理
  • 乘客被地铁厕所门砸伤,南京地铁:突然坏的,已和乘客沟通处理