2019-10-16Java-066

每日总结


一、ResultMap

        1、<resultMap>用于自定义映射关系, 可以由程序员自主制定列名和属性名的映射关系. 一旦使用 resultMap, 表示不再采用自动映射机制.

        a、 <association>标签:用于关联一个对象,其中包含属性:

            property:指定要关联的属性名

            select:指定要继续引用的查询,namespace+id

            column:查询时需要传递的列

<association>

        b、<collection>标签:用于关联一个集合,其中包含属性:

            property:指定要关联的属性名

            select:设定要继续引用的查询,namespace+id

            culumn:查询时需要传递的列

<collection>

        2、resultType和resultMap的区别:

            如果查询时使用 resultType 属性, 表示采用 MyBatis 的Auto-Mapping(自动映射)机制, 即相同的列名和属性名会自动匹配.

二、多表查询

        MyBaits实现多表关联查询有两种情况

        1、一对多        2、多对一

MyBatis多表查询

具体使用的实现方式

实现方式

三、业务装填

        业务装填就是将DML与绑定分开,mapper层只做单表查询操作,在service层进行手动装配,实现关联查询的结果

业务装填

四、MyBatis框架优点与运行原理

        优点:(MyBatis做了原来Java中JDBC技术做的事情,属于半成品)

            1.mybatis是一种持久层框架,也属于ORM映射。前身是ibatis。

            2.相比于hibernatehibernate为全自动化,配置文件书写之后不需要书写sql语句,但是欠缺灵活,很多时候需要优化;

            3.mybatis为半自动化,需要自己书写sql语句,需要自己定义映射。增加了程序员的一些操作,但是带来了设计上的灵活,并且也是支持hibernate的一些特性,如延迟加载,缓存和映射等;对数据库的兼容性比hibernate差。移植性不好,但是可编写灵活和高性能的sql语句。

        运行原理

    MyBatis运行过程中涉及的类和和接口

        1、Resourcers(C):用于加载MyBatis核心配置文件

        2、XMLConfigBuider(C):用于解析xml文件(核心配置文件)

        3、Configuration(C):用于存放xml文件解析后的结果

        4、DefaultSqlSessionFactory(C):是SqlSessionFactory(I)的实现类,创建时需要使用Configuration对象

        5、SqlSession(I):是MyBatis的核心

        6、DefaultSqlSession(C):是SqlSession接口的实现类

        7、TransactionFactory(I):用于生产Transction对象

        8、Transaction(I):用于表示操作数据库的事务对象

        9、Executor(I):是MyBatis的核心执行器,类似于jdbc中的Statement,常用的实现类是SimpleExecutor

        SqlSession对象创建经历的过程

        1.当MyBaits运行开始时,先通过Resources加载核心配置文件

        2.之后使用XMLConfigBuilder对配置文件进行解析,将解析结果封装为Configuration对象

        3.使用Configuration对象构建一个DefaultSqlSessionFactory对象

        4.调用工厂对象中的openSession方法创建SqlSession对象

运行原理

        1、当MyBatis开始运行时,首先要通过Resources加载核心配置文件,然后使用XMLCongigBuilder对配置文件进行解析,将解析结果封装成对象,接着,使用Configurtion对象构建一个DefaultSqlSessionFactory对象,至此,SqlSession工厂构建完成

        2、工厂构建完成后,通过工厂对象调用openSession方法创建SqlSession对象,在这个过程中,需要通过TransactionFactory生成对象,并且还需要创建核心执行器Executor对象,然后通过这些对象来创建DefaultSession对象,至此,SqlSession对象创建成功

        3、SqlSession对象创建成功后,调用对象执行相应的操作,如果执行成功,执行commit方法提交事务,如果执行失败,调用rollback回滚事务,最后通过close方法关闭Session资源

MyBatis运行原理
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容