【Mybatis】框架快速入门

本文介绍了MyBatis这一持久层ORM框架,阐述其核心系统架构,包括SqlSessionFactoryBuilder、SqlSessionFactory和SqlSession的作用。还分析了MyBatis对JDBC的优化,如使用连接池、分离SQL语句等。此外,讲解了输入参数设置、输出结果封装以及数据源的三种分类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

What

 Mybatis是持久层ORM框架,它是对于JDBC的封装,支持定制的SQL、存储过程以及高级映射,然后避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJO映射成数据库的记录。

核心系统架构图

在这里插入图片描述

  1. SqlSessionFactoryBuilder接收SqlMapConfig.xml文件流,构建出SqlSessionFactory对象。
  2. SqlSessionFactory读取SqlmapConfig.xml连接数据库和mapper映射信息。用来生产出真正操作数据库的SqlSession对象。
  3. SqlSession执行拼接好的SQL,然后输出映射
  4. Statement查询数据库;

对于JDBC的优化

-问题一: JDBC中数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能
解决方案:使用数据库链接池可解决这个问题,在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链接。

问题二:Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大, sql 变动需要改变 java 代码。
 解决方案:将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。

问题三:向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需要和参数对应。
 解决方案:Mybatis 自动将 java 对象映射至 sql 语句,通过 statement 中的 parameterType 定义输入参数的类型。

问题四:对结果集解析麻烦, sql 变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成 pojo 对象解析比较方便。
 解决方案:Mybatis 自动将 sql 执行结果映射至 java 对象,通过 statement 中的 resultType 定义输出结果的类型

输入参数深入

 使用标签的 parameterType 属性来设定。该属性的取值可以是基本类型,引用类型(例如:String 类型),还可以是实体类类型(POJO 类)。同时也可以使用实体类的包装类。

注意:

  1. 基 本 类 型 和 String 我 们 可 以 直 接 写 类 型 名 称 , 也 可 以 使 用 包 名 . 类 名 的 方 式 , 例 如 :java.lang.String。
  2. 实体类类型,目前我们只能使用全限定类名。

在这里插入图片描述

输出结果封装

 resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。它的使用和parameterType类型一样。
在这里插入图片描述

数据源分类

1.UnPooled

 这是不使用连接池的数据源,然后在进行dataSource连接的时候,需要重新创建连接,以及断开连接,这是比较耗时。

2.Pooled

&mesp;数据的连接、断开在连接池中取,这样提高了效率。在 Mybatis 的 SqlMapConfig.xml 配置文件中, 通过来实现 Mybatis 中连接池的配置。

3.JNDI

 Java 命名与目录接口(Java Naming and Directory Interface).在J2EE容器中配置JNDI参数,定义一个数据源,也就是JDBC引用参数,给这个数据源设置一个名称;然后,在程序中,通过数据源名称引用数据源从而访问后台数据库。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值