Mybatis技术简介

MyBatis的基本配置
MyBatis的前世今生
   

      MyBatis的前身就是iBatis,iBatis本是由Clinton Begin开发,后来捐给Apache基金会,成立了iBatis开源项目2010年5月该项目由Apahce基金会迁移到了Google Code,并且改名为MyBatis



MyBatis介绍:

     

MyBatis是一个数据持久层(ORM)框架。把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。

MyBatis的优点:
1.基于SQL语法,简单易学。
2.能了解底层组装过程。  
3.SQL语句封装在配置文件中,便于统一管理与维护,降低了程序的耦合度。
4.程序调试方便。

 

与Hibernate的对比:


    Hibernate

1、主流的ORM框架、提供了从 POJO 到数据库表的全套映射机制

2、会自动生成全套SQL语句。

3、因为自动化程度高、映射配置复杂,api也相对复杂,灵活性低.

4、开发人同不必关注SQL底层语句开发


   MyBatis

1是一个SQL语句映射的框架(工具)

2、注重POJOSQL之间的映射关系。不会为程序员在运行期自动生成 SQL

3、自动化程度低、手工映射SQL,灵活程度高.

4、需要开发人员熟炼掌据SQL语句


MyBatis的基本要素:


一、configuration.xml全局配置文件

二、mapper.xml核心映射文件

三、SqlSession接口


基础配置文件configuration.xml

configuration.xml系统的核心配置文件,包含数据源和事务管理器等设置和属性信息,XML文档结构如下

Ø   configuration 配置
Øl  properties 可以配置在Java 属性配置文件中
Øl  settings 修改 MyBatis 在运行时的行为方式
Øl  typeAliases  Java 类型命名一个短的名字
Øl  typeHandlers 类型处理器
Øl  objectFactory 对象工厂
Øl  plugins 插件
Øl  environments 环境
Øenvironment 环境变量

transactionManager 事务管理器

dataSource 数据源

Ømappers l  映射器

配置环境

<configuration>

<environmentsdefault="development">

<environmentid="development">

<transactionManagertype="JDBC"/>

<dataSourcetype="POOLED">

<propertyname="driver" value="${driver}"/>

<propertyname="url" value="${url}"/>

<propertyname="username" value="${username}"/>

<propertyname="password" value="${password}"/>

</dataSource>

</environment>

<environmentid="development2">

……

</environment>

</environments>

</configuration>








### MyBatis框架简介 MyBatis 是一款优秀的持久层框架,其核心功能在于支持定制化的 SQL 查询、存储过程以及高级映射[^3]。它能够显著减少 JDBC 编码量,消除手动设置参数和获取结果集的过程。通过简单的 XML 配置或者注解方式,MyBatis 可以将 Java 接口和 POJO 映射为数据库中的记录。 #### 功能特点 - **SQL 定制化**:允许开发者编写自定义的 SQL 语句,满足复杂查询需求。 - **动态 SQL 支持**:提供强大的动态 SQL 构建能力,可以根据条件生成不同的 SQL 语句。 - **映射机制**:通过 XML 或者注解实现 Java 对象与数据库表之间的映射关系。 - **缓存支持**:内置一级缓存(Session 级别),并可扩展二级缓存提升性能。 - **事务管理**:集成 JDBC 的事务处理逻辑,简化开发难度。 --- ### 工作原理详解 MyBatis 的工作流程主要分为以下几个阶段: 1. **配置解析** - MyBatis 初始化时会加载全局配置文件 `mybatis-config.xml` 和 Mapper 文件。这些文件包含了数据源信息、事务管理器配置以及 SQL 映射规则等内容[^5]。 2. **构建 SqlSessionFactory** - 使用 `SqlSessionFactoryBuilder` 解析配置文件后生成 `SqlSessionFactory` 实例。该实例负责创建后续所需的 `SqlSession` 对象[^5]。 3. **创建 SqlSession** - 每次执行数据库操作前都需要打开一个新的 `SqlSession`。它是 MyBatis 提供的一个轻量级对象,封装了底层 JDBC 连接池的功能,并提供了增删改查方法接口[^4]。 4. **SQL 封装与执行** - 当调用某个 DAO 方法时,MyBatis 会根据传入的方法名匹配对应的 Mapper 中声明的 SQL 节点。随后利用反射技术提取输入参数值替换占位符位置形成完整的 SQL 文本[^1]。 - 执行完毕之后再依据返回的数据结构自动转换为目标类型的实体类列表或其他形式的结果集合[^1]。 5. **结果映射** - 数据库查询得到 ResultSet 后交由 ResultHandler 处理,按照预先设定好的字段对应关系逐一赋值给目标 Bean 属性完成最终的对象组装过程[^3]。 以下是典型的代码示例展示如何初始化 MyBatis 并执行 CRUD 操作: ```java // 加载配置文件 InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); try (SqlSession session = sqlSessionFactory.openSession()) { // 获取Mapper代理对象 UserMapper mapper = session.getMapper(UserMapper.class); // 插入一条新纪录 int result = mapper.insertUser(new User()); } catch(Exception e){ System.out.println(e.getMessage()); } ``` --- ### 总结 综上所述,MyBatis 不仅具备高度灵活性还拥有良好的兼容性和扩展性,在实际项目中被广泛应用于中小型系统的快速搭建当中[^4]。通过对原生 JDBC API 的抽象封装极大地方便了程序猿们日常编码作业的同时也保留了一定程度上的自由度去应对各种特殊场景下的业务诉求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值