ssm框架之mybatis框架讲解

发布于:2025-03-19 ⋅ 阅读:(18) ⋅ 点赞:(0)

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接口的包路径

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到