mybatis

核心组件

  • SqlSessionFactoryBuilder

    通过配置或代码生成SqlSessionFactory

    SqlSessionFactory = new SqlSessionFactoryBuilder().build()

  • SqlSessionFactory

    使用工厂模式(不需知道内部如何实现,生成新的对象),生成SqlSession对象

    SqlSession = SqlSessionFactory.openSession()

  • SqlSession

    既可以发送SQL,也可以获取Mapper接口,还能控制数据库事务

  • SQL Mapper

    由一个java接口和xml文件或注释构成的映射器,mybatis默认情况下提供自动映射,只要SQL返回的列名和POJO能够对应起来

生命周期

  • SqlSessionFactoryBuilder

    创建完SqlSessionFactory就可以销毁了

  • SqlSessionFactory

    其生命周期等同于mybatis的应用周期,一般作为单例被共享

  • SqlSession

    存在业务请求中,处理完请求应释放资源

  • Mapper

    小于等于SqlSession生命周期

常用配置

  • cacheEnabled

    缓存全局开关,默认为开

  • lazyLoadingEnabled

    延迟加载的全局开关,默认为false

    延迟加载:先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快

  • aggressiveLazyLoading

    默认false

    分页

1
2
//在dao层添加一个参数
List<Role> findRole(Role role, RowBounds rowBounds);

缓存

  • 二级缓存是范围在mapper (需要手动开启)
  • 一级缓存是范围在sqlsession (默认开启)
赏个🍗吧
0%