• MyBatis


    1、什么是MyBatis

        MyBatis最早源自于Apache基金会的一个开源项目iBatis,2010年项目由Apache software foundation迁移Google Code,改名为MyBatis

        MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架,其使用简单的XML配置定义映射关系,将实体类对象映射成数据库中记录

    2、MyBatis工作原理

        1)加载配置

    MyBatis将SQL的映射信息加载为一个个的MappedStatement对象(包括传入的参数映射配置,执行的sql语句,结果映射配置),将其存储在内存中

        2)SQL解析

    当API接口层收到调用请求时,会接收到传入SQL的ID和传入的参数对象(可以是Map,实体类或者基本数据类型),MyBatis会根据SQL的ID找到相对应的MappedStatement,然后根据传入的参数对象对MappedSatement进行解析,解析后可以得到最终要执行的sql语句和参数

        3)SQL执行

    将最终得到的sql语句和参数拿到数据库进行执行,得到操作数据库的结果

        4)结果映射

    将操作数据库的结果按照映射配置进行转换,可以转换为Map、实体类或者基本数据类型,将转换结果返回

    3、MyBatis框架API

        1)SqlSessionFactoryBuilder

    此对象负责根据MyBatis主配置文件SqlMapConfig.xml构建SqlSessionFactory对象

        2)SqlSessionFactory

    每一个MyBatis的应用程序都以一个SqlSessionFactory对象为核心,此对象负责创建SqlSession对象

        3)SqlSession

    此对象包含所有执行sql语句操作的方法,用于执行已映射的sql语句

    4、MyBatis配置文件

        1)SqlMapConfig.xml(1个)

    主配置文件,用于指定数据库连接参数

        2)SqlMapper.xml(N个)

    映射文件,用于定义SQL语句映射信息

    5、MyBatis基本应用

        1)搭建MyBatis技术环境

    * 为工程添加MyBatis的开发包和数据库驱动包
    * 在src下添加MyBatis的主配置文件SqlMapConfig.xml
    * 配置SqlMapConfig.xml,指定数据库连接参数
    * 利用MyBatis提供API,获取SqlSession对象

        2)获取SqlSession对象

    String path="主配置文件URL";
    Reader reader=Resources.getResourceAsReader(path);
    //构建SqlSessionFactory对象
    SqlSessionFactoryBuilder ssfb=new SqlSessionFactoryBuilder();
    SqlSessionFactory ssf=ssfb.build(reader);
    //创建SqlSession对象
    SqlSession ss=ssf.openSession();

        3)利用SqlSession实现CURD操作

    * 根据数据库表编写实体类

    * 编写SqlMapper.xml映射文件,定义SQL操作和映射信息

    * 获取SqlSession对象,执行增删改查操作

    * 提交事务(DML)

    * 释放SqlSession对象资源

        4)返回Map类型查询结果

        5)resultMap映射定义

    在映射文件定义<select>操作时,如果查询结果集字段名和实体类的属性名不一致,则需要使用<resultMap>标签显示指定映射关系

        注意:不一致的问题,如果结果集的字段名和实体类的属性名全部不一致,且在结果映射时定义为resultType,则不会创建实体对象,但是如果只是部分不一致,则会创建实体对象,并且自动关联名字一致的属性

        6)Mapper映射器

    Mapper映射器是开发者创建绑定映射语句的接口,映射器接口的实例对象可以冲SqlSession中获取

       注意:Mapper接口名称必须和对应的映射文件中的namespace一致

                 Mapper接口中方法名必须和映射文件中SQL的ID一致

  • 相关阅读:
    JavaScript大文件上传(切片)
    hdu 4841 圆桌问题(STL vector)
    hdu 5389 Zero Escape(记忆化搜索)
    hdu 1331 Function Run Fun
    hdu 1078 FatMouse and Cheese(记忆化搜索)
    【CQgame】[幸运方块 v1.1.3] [Lucky_Block v1.1.3]
    SAP C4C,CRM和S4HANA的Saved Query使用介绍
    SAP CRM中间件Material Sales Organization和distribution channel的映射逻辑
    SAP CRM 中间件Request download里,遇到/SAPPSPRO/S_MAT_ENHANC_COMM 错误的解决办法
    SAP 数据库表CRMD_ORDERADM_I字段OBJECT_TYPE的计算逻辑
  • 原文地址:https://www.cnblogs.com/xslzwm/p/9604533.html
Copyright © 2020-2023  润新知