Mybatis介绍

Mybatis:

​    Mybatis是一个半ORM框架,它内部封装了JDBC,开发时我们只需要关注sql本身,不用去处理加载sql驱动,创建连接,还有各种声明过程,我们可以直接编写原生sql。

​    缺点:sql语句是依赖于数据库,数据库跟换了会导致sql语句需要修改

​    优点:mybatis是统一管理数据库连接,sql能够写在统一位置方便管理,能够映射实体类。

使用过程:

1. 创建SqlSessionFactory,可以从配置或者直接编码来创建SqlSessionFactory;

2. 通过SqlSessionFactory创建SqlSession,他是程序和数据库连接的桥梁;

3. 通过SqlSession来执行sql语句,

4. 提交事务sqlSession.commit();

5. 关闭会话,sqlSession.close();

   

生命周期:

1. 先是使用SqlSessionFactoryBuilder创建sqlSessionFactory,创建完之后就没了

2. sqlSessionFactory是单例的,并且是应用级别的生命周期

3. sqlSession的实例时线程不安全的,因此不能被共享,支队应一次请求或者一个方法。

   

模糊查询like查询语句:使用like  concat('%',#{data},'%')

使用selectkey能够获取到插入到数据库中的id

Mybatis的一级缓存和二级缓存:

1. 一级缓存:是基于perpetualCache的HashMap本地缓存,其存储作用于为SqlSession,各个SqlSession相互之间隔离,与SqlSession的生命周期一样,当flush或者close就会将cache清空,默认开启一级缓存
2. 二级缓存与一级缓存机制相同,默认也是采用perpetualCache,HashMap本地存储,他的作用域不同,作用域Mapper(Namespace)可以在多个sqlSession中共享。默认是不打开的,
3. 启动类上添加@EnableCaching,mapper上添加@CacheNamespace;配置文件上添加mybatis.configuration.cache-enable:true  ;实体类要进行序列化


executor(执行器)->StatementHandler(数据库会话器)->ParameterHandler(参数处理器)->ResultSetHandler(结果处理器)

你可能感兴趣的:(mybatis,oracle,数据库)