• mybatis知识汇集


    一.核心组件

    1.SqlSessionFactoryBuilder:根据配置或者注解模式生成SqlSessionFactory.

    2.SqlSessionFactory:根据工厂来生成SqlSession。一般是一个全局单例,对一个数据库连接池,用它来创建SqlSession。

    3.SqlSession:一次会话,即发送sql,并返回结果,也可以获取Mapper接口。相当于一个JDBC的connection对象,在一次失误会话结束后,会被关闭,他可以为我们获得Mapper.

    4.Sql Mapper:由一个Java接口和XML文件组成,给出相对应的sql和映射规则,它负责发送sql,并把返回结果映射为实体对象。SqlSession销毁的时候它也会被销毁。

    二.配置详解

    1.枚举处理器:EnumOrdinalTypeHander或者EnumTypeHander,用来将sql返回的字段,根据枚举设置转换为相应的枚举名称。

    2.mybatis默认开启一级缓存,不开启二级缓存。开启二级缓存时候,要求返回的对象必须是可序列化的,而且是在sqlsession调用了commit方法后才能生效。缓存回收策略有:最少使用LRU,先进先出FIFO,软引用SOFT(移除基于垃圾回收期状态和软引用规则的对象),弱引用,更积极地移除基于垃圾回收期状态和弱引用规则的对象,这里采用的是LRU,移除最长时间不用对象。另外,还有3个设置属性分别是:flushInterval:刷新间隔时间,单位毫秒;size:引用数目,代表缓存最多存储多少个对象,不宜过大,否则会导致内存溢出,1024及其以下比较合适;readOnly,设置只读后不能修改,可以快速读取,但无法修改缓存。

    3.动态sql:就是在select 区域内使用if、choose、when、ohterwise元素。如果判断查询条件,则使用where【元素】,在里面加入if判断比较合适。如果参数是个数组或者list、set等集合,则可以使用foreach元素,形成in()语句。如果模糊查询,则可以使用bind元素,讲传入的参数包装成新参数,在sql语句中引用新参数即可,避免了不同数据库对like语句后的参数连接语法不同问题。

    三.各种版本mybatis差异

    1.tk.mybatis,查询采用Example.Criteria方式,参数用的是实体的字段作为查询条件,然后转为数据库表字段,如果想过滤某个字段,则在实体字段上添加标记:@Transient【import javax.persistence.*;】

    其查询实例:

     Example example = new Example(User.class);
     Example.Criteria criteria = example.createCriteria();
     criteria.andEqualTo("userId", sysUser.getId());#注意,这里用的是User表中的UserId字段,然后翻译成数据库字段。
     List<User> moldUserList = userMapper.selectByExample(example);

    2.mybatis-plus,采用直sql方式,参数直接采用的是数据库字段形式,如果想忽略某个字段则添加标记:@TableField(exist = false)

    其查询实例:

     QueryWrapper<User> example1 = Wrappers.query();
     example1.eq("user_id", userId);#这里用的是数据库表字段
     List<User> gramWeightRecords = UserMapper.selectList(example1);

    文章出处:www.cnblogs.com/jizhong

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。否则保留追究法律责任的权利。

  • 相关阅读:
    ActiveRecord
    AOP
    Controller
    JFinalConfig
    Java I/O的工作机制2
    Java I/O的工作机制1
    MyEclipse 在build path时无效
    Android studio与夜神模拟器连接
    城市选择选择 / 三级联动
    drawer抽屉 / drawer的开关
  • 原文地址:https://www.cnblogs.com/jizhong/p/13991541.html
Copyright © 2020-2023  润新知