• mybatis学习笔记


    1、mybatis提供了SqlSession接口,用来执行sql,进行增删改查。SqlSession由factory获得。

      SqlSession sqlSession= sqlSessionFactory.openSession();

    2、mybatis通过mapper动态代理的方式,负责生成sqlSession、执行sql等公有部分的代码实现。也就是动态代理生成dao层(mapper接口)的实现类,只需手动写dao层和mapper的xml文件就可以。

    3、可以用xml方式和注解(@select等)的方式,来代理生成mapper接口的实现类。

    4、使用mybatis需要三个部分构成:全局配置文件(<settings>、<properties>、<mapper>、<environments>、<typeAlias>等标签)、mapper接口、mapper的xml文 件。

    5、mapper xml文件的parameterType可以是基本数据类型、pojo、map、集合(数组)。

      当类型是pojo时,是根据反射的原理取属性的值。

    6、mapper xml文件的输出类型可以用resultType,可以用resultMap。

    7、mybatis关联查询:

      一对一查询:resultMap中需要用<association>标签,用来映射结果集

      一对多查询:resultMap中需要用<collection>标签,用来映射结果集

    8、延迟加载(嵌套查询):

      (1)由resultMap标签实现,只对关联对象的查询有延迟。

      (2)延迟加载是:先查询完成主表对象,当用到关联表对象时,才进行加载关联表的对象。比如:

         select * from user u left join on order o on o.user_id=u.id where u.id='bonnie'

         比如bonnie用户对应5个订单(order)信息,那么,查询时先查询出用户信息,当用到订单信息时才去查询订单信息,这时是需要查询5个sql。

      (3)延迟加载适用于,关联信息条数不多的情况。

    9、mybatis缓存:

      一级缓存(sqlSession级别):slqSession对象中有一个hashmap用来缓存数据,不同的sqlSession的缓存互不影响。

      二级缓存(mapper中的namespace级别):namespace下的二级缓存是跨sqlSession的。

    10、动态sql:

      拼接sql片段(<sql>标签、用<include>拼接)、应用循环(<foreach>标签)、判断(<if>标签)

     <sql id="query_where">
        <if test="ids !=null and ids.size()>0">
          and id in
          <foreach collection="ids" item="id" open="(" close=")" seperator=","
            #{id}
          </foreach>
        </if>
      </sql>

    11、mybatis逆向工程:

      根据数据库表生成mapper文件和pojo

    12、分页插件pagehelper

      拦截sql语句,封装分页语句。

        

  • 相关阅读:
    php 中 return exit break contiue 详解
    C++ Primer学习笔记2--c++标准库中的 vector、string 和 bitset 类型
    asp.net 生成xml文件 与 asp生成xml文件
    android 性能优化
    Internet基础
    华为一道机试
    智能家居趋势
    hdu4708 Rotation Lock Puzzle
    java要在命令行执行eclipse的项目的方法
    linux和windows下安装python拓展包及requirement.txt安装类库
  • 原文地址:https://www.cnblogs.com/BonnieWss/p/12143765.html
Copyright © 2020-2023  润新知