SSM框架---MyBatis初识持久层框架(一)

一、简介

进化史:iBatis1.0 --> iBatis2.0 --> iBatis3.0 --> MyBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。---查看底层源码,你会发现好多目录是iBatis

持久层框架:jdbc --> dbutil --> Hibernate --> springDataJPA --> Mybatis

其他框架都是对jdbc的封装,那为什么不直接使用jdbc呢?

二、jdbc的缺陷

1、涉及到重复创建链接和释放链接,造成资源浪费。解决方式:使用连接池。 2、出现硬编码。体现在:数据库驱动,url、用户名密码、sql。解决方式:使用配置文件 3、结果获取不方便。解决方式:把结果放到一个POJO中 。

(POJO就是一个普通的JavaBean,只是在这个框架里用了一个新的称呼POJO)

三、框架对比

Hibernate springDataJPA MyBatis 核心配置文件 hibernate.cfg.xml(SSH整合后废弃) sqlMapConfig.xml(SSM整合后废弃) 映射文件 xxx.hbm.xml xxxMapper.xml 会话工厂 sessionFactory sqlSessionFactory 会话(与数据库交互) session entityManager sqlSession

四、MyBatis架构

1、通过加载核心配置文件sqlMapConfig.xml --> (可创建)sqlSessionFactory工厂(单例模式) --> (产生)sqlSession(具有CRUD方法) --> (通过)执行器Executor(执行对象从而与数据库交互) --> (执行sql的封装对象)MapperStatement --> 数据库

2、输入映射(sql入参):parameterType

    基础数据类型,包括string,long,double,int,boolean,float等 pojo map 包装的pojo,即封装的VO类里包含POJO类

3、输出映射(输出的结果数据类型):resultType(自动配置列和属性的映射)

    基础数据类型 pojo list,注意的是规范规定在映射文件xxxMapper.xml中写:resultType="pojo";在java类中:List<POJO>。list可以查询多条数据并返回 map

注意:resultType和resultMap不能同时出现。

4、输出映射(输出的结果数据类型):resultMap(手动配置列和属性的映射)

    正式开发用的比较多; 当列和属性相同时可省略,但为了看起来方便,我们还是留着吧
<resultMap type="user" id="userResult">  <!--user是pojo的别名-->
    <!--<id property="id" column="id" />-->  <!--列名与属性相同可省略,但不省略为好-->
    <result property="username" column="user_name"/>
    <result property="sex" column="gender"/>
    <!--<result property="birthday" column="birthday"/> --> <!--列名与属性相同可省略,但不省略为好-->
    <!--<result property="address" column="address"/> --> <!--列名与属性相同可省略,但不省略为好-->
</resultMap>
经验分享 程序员 微信小程序 职场和发展