zoukankan      html  css  js  c++  java
  • 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、学习表与表之间的关系(一对一、一对多、多对多)
        通过表的外键分析表之间的关系
    注意:分析表与表之间的关系时是要建立在具体 的业务意义基础之上

     

  • 相关阅读:
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task2
    Datawhale编程实践(LeetCode 腾讯精选练习50)Task1
    关于深度学习中样本权重取0的问题
    对多维numpy数组使用random.shuffle的问题
    Ubuntu18.04LTS左上角光标闪烁原因之一:NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
    pycharm 报错ImportError: could not import module 'PySide2.QtWidgets'
    pyinstaller 打包pyside2项目遇到plugins window问题
    git pull的时候出错: Git Couldn't reserve space for cygwin's heap
    angularjs鼠标移入移出实现显示隐藏
    gulp编译出现Cannot find module 'internal/util/types'——node环境的变更
  • 原文地址:https://www.cnblogs.com/yaowen/p/4870175.html
Copyright © 2011-2022 走看看