mybatis0201 01复习

mybatis是什么?
    mybatis是一个持久层框架,是apache下的开源项目,前身是itbatis,是一个不完全的ORM框架(因为mybatis提供输入和输出的映射,需要程序员自己写sql语句),所以mybatis重点是对 sql语句的灵活操作。
    适合用于:需求变化频繁, 数据模型不固定的项目,例如:互联网项目。

mybatis架构?
    SqlMapConfig.xml(名称不固定),配置内容:数据源、事务、properties、typeAliases、settings、mapper配置。

    SqlSessionFactory--会话工厂,作用是创建SqlSession,实际开发中以单例模式管理 SqlSessionFactory。
    
    SqlSession--会话,是一个面向用户(程序员)的接口,使用mapper代理方法开发是不需要程序员直接调用sqlSession的方法。是线程不安全,最佳适用场合方法体内。

mybatis开发dao的方法:
    1、原始dao开发方法,需要程序员编写dao接口和实现类,此方法在当前企业中还有使用,因为ibatis使用的就是原始dao开发方法。
    2、mapper代理方法,程序员只需要写mapper接口(相当于dao接口),不用写实现类,mybatis自动根据mapper接口和mapper接口对应的statement自动生成代理对象(接口实现类对象)。
    开发需要遵循规则:
     1)mapper.xml和mapper.java连接起来,因此mapper.xml中namespace是mapper接口的全限定名
     2)mapper.xml中statement的id为mapper接口方法名
     3)mapper.xml中statement的输入映射类型(parameterType)和mapper接口方法输入参数类型一致
     4) mapper.xml中statement的输出映射类型(resultType)和mapper接口方法返回结果类型一致

resultType和resultMap都可以完成输出映射:
    resultType映射要求sql查询的列名和输出映射pojo(自定义java类)类型的属性名一致
    resultMap映射时对sql查询的列名和输出映射pojo类型的属性名作一个对应关系。

动态sql:
    #{}和${}完成输入参数的属性值获取,通过OGNL获取parameterType指定pojo的属性名。
    #{}:占位符号,好处防止sql注入
    ${}:sql拼接符号
    if
    where 
    foreach
1、使用resultMap完成高级映射(重点)
    学习商品订单数据模型(一对一、一对多、多对多)
    resultMap实现一对一、一对多、多对多
    延迟加载

2、查询缓存(重点)
    一级缓存
    二级缓存
    
3、mbatis和spring整合(重点)

4、mybatis逆向工程(常用)
商品订单数据模型
学会在企业中如何去分析陌生表的数据模型:
1、学习单表记录了什么东西(去学习理解需求)
2、学习单表重要字段的意义(优先学习不能为空的字段)
3、学习表与表之间的关系(一对一、一对多、多对多)
    通过表的外键分析表之间的关系
注意:分析表与表之间的关系时是要建立在具体 的业务意义基础之上

 

原文地址:https://www.cnblogs.com/yaowen/p/4870175.html