MyBatis

1、什么是MyBatis

    MyBatis最早源自于Apache基金会的一个开源项目iBatis,2010年项目由Apache software foundation迁移Google Code,改名为MyBatis

    MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,其使用简单的XML配置定义映射关系,将实体类对象映射成数据库中记录

2、MyBatis工作原理

    1)加载配置

MyBatis将SQL的映射信息加载为一个个的MappedStatement对象(包括传入的参数映射配置,执行的sql语句,结果映射配置),将其存储在内存中

    2)SQL解析

当API接口层收到调用请求时,会接收到传入SQL的ID和传入的参数对象(可以是Map,实体类或者基本数据类型),MyBatis会根据SQL的ID找到相对应的MappedStatement,然后根据传入的参数对象对MappedSatement进行解析,解析后可以得到最终要执行的sql语句和参数

    3)SQL执行

将最终得到的sql语句和参数拿到数据库进行执行,得到操作数据库的结果

    4)结果映射

将操作数据库的结果按照映射配置进行转换,可以转换为Map、实体类或者基本数据类型,将转换结果返回

3、MyBatis框架API

    1)SqlSessionFactoryBuilder

此对象负责根据MyBatis主配置文件SqlMapConfig.xml构建SqlSessionFactory对象

    2)SqlSessionFactory

每一个MyBatis的应用程序都以一个SqlSessionFactory对象为核心,此对象负责创建SqlSession对象

    3)SqlSession

此对象包含所有执行sql语句操作的方法,用于执行已映射的sql语句

4、MyBatis配置文件

    1)SqlMapConfig.xml(1个)

主配置文件,用于指定数据库连接参数

    2)SqlMapper.xml(N个)

映射文件,用于定义SQL语句映射信息

5、MyBatis基本应用

    1)搭建MyBatis技术环境

* 为工程添加MyBatis的开发包和数据库驱动包
* 在src下添加MyBatis的主配置文件SqlMapConfig.xml
* 配置SqlMapConfig.xml,指定数据库连接参数
* 利用MyBatis提供API,获取SqlSession对象

    2)获取SqlSession对象

String path="主配置文件URL";
Reader reader=Resources.getResourceAsReader(path);
//构建SqlSessionFactory对象
SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
SqlSessionFactory ssf=ssfb.build(reader);
//创建SqlSession对象
SqlSession ss=ssf.openSession();

    3)利用SqlSession实现CURD操作

* 根据数据库表编写实体类

* 编写SqlMapper.xml映射文件,定义SQL操作和映射信息

* 获取SqlSession对象,执行增删改查操作

* 提交事务(DML)

* 释放SqlSession对象资源

    4)返回Map类型查询结果

    5)resultMap映射定义

在映射文件定义<select>操作时,如果查询结果集字段名和实体类的属性名不一致,则需要使用<resultMap>标签显示指定映射关系

    注意:不一致的问题,如果结果集的字段名和实体类的属性名全部不一致,且在结果映射时定义为resultType,则不会创建实体对象,但是如果只是部分不一致,则会创建实体对象,并且自动关联名字一致的属性

    6)Mapper映射器

Mapper映射器是开发者创建绑定映射语句的接口,映射器接口的实例对象可以冲SqlSession中获取

   注意:Mapper接口名称必须和对应的映射文件中的namespace一致

             Mapper接口中方法名必须和映射文件中SQL的ID一致

posted @ 2018-09-07 14:44  不是一个世界的人  阅读(143)  评论(0编辑  收藏  举报