Mybatis学习

之前学习了Mybaitis 相比于Hibernate的宽度更广,但是开发效率相对要低一些,下面就是个人对Mybaitis的个人理解

#Mybatis框架  属于持久层框架
    半自动orm (object relation mapping)对象关系映射 框架
    1.jdbc程序有什么问题?
        1.分析jdbc代码,获取到问题?
            1.数据库连接频繁的创建和关闭,浪费了数据库资源,效率非常低
                连接池:预先在连接词定义一些连接,用完了再放回去
            2.sql语句硬编码到代码中,以后修改了sql语句需要重新编译
                将sql语句配置到文件中。以后要修改sql直接改文件
            3.占位符的设置也是硬编码到代码中。换了顺序需要改源码
                将占位符设置放在文件中。
            4.结果集遍历也是硬编码
                结果集遍历通过文件来进行映射。实体bean和数据库表之间的映射
            5.动态连接其他数据库,这段代码无法重用
                将连接语句配置到文件中。
        2.如何解决问题?

    Mybatis 解决了上述所有问题

***什么是Mybatis?***
    
    mybatis是支持普通sql查询,存储过程和高级映射的优秀持久层框架。mybatis几乎消除了页面上所有的jdbc代码,参数的手动设置,结果集的映射。
    
    mybatis对jdbc进行了封装,使开发者以后只需要关注sql本身。而不必话费大量的事件去管理连接、驱动、结果集之类的。mybatis托管在github。
    
    mybatis是一个半自动的orm映射框架
    
    半自动:我们对数据进行持久化的时候不需要关注代码,只需要关注sql语句

    orm:对象关系映射。是一种程序的继续。用于实现面线对象编程转化为关系型数据库的表之间关系

###mybatis架构
    1.config.xml文件:mybatis的全局配置文件,包含了mybatis的底层环境(驱动加载,连接)。config.xml文件还包含了mapper.xml(sql映射文件) 文件。
    
    2.sqlsessionfactory对象(会话工厂):目的是产生会话对象
    
    3.sqlsession:会话对象,面向用户的接口。提供了数据库的操作方法。
    
    4.executor(接口、执行器,有两个实现类:默认执行器和缓存执行器)
    

    5.MappedStatement(mybatis的封装对象):封装了sql语句。

1.Config.xml

  Mybatis学习

这是Mybatis的配置文件,环境配置里对jdbc数据库连接进行了配置,在项目里最好有一个db.properties文件,用于避免硬编码进行数据库连接

2.sqlsessionFactory

Mybatis学习

获取配置文件配置,build出sessionFactory,获得sqlSession

4.excutor

Mybatis学习

通过session.getMapper(类对象),可以和Mapper文件里面的命名空间还有Mapper文件里面的id对应方法,这样就可以一一匹配

5.MappedStatement

    Mybatis学习

type里面直接写ClassBean是应为在Cofig.xml文件中写了类的别名,这样就可以直接写类名,不用写全名,resultMap里面的名字和resultMap标签里面的id一一对应


写到这里就能对Mybatis进行很好的应用了,之后就是Spring整合Mybatis了