mybatis简介

优点和缺点

  sql和代码分离,利于管理和优化,但是sql代码量大,有些不好处理。MyBatis支持普通sql查询,存储过程,高级映射,其消除了所有的JDBC代码和参数的手工设置以及结果集的检索,使用简单的XML和注解来配置映射关系。恩,还有动态sql,避免了sql注入。

mybatis缓存机制

  Mybatis缓存是分为2级缓存。
  一级缓存是一个sqlSession级别的。就是一个sqlSession里面sql和参数一样的sql就会从从缓存里面取出来,默认开启。
  二级缓存:,多个SqlSession使用同一个Mapper的sql语句去操作数据库,得到的数据会存在二级缓存区域,它同样是使用HashMapper进行数据存储,相比一级缓存SqlSession,二级缓存的范围更大,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。默认不开启


mybatis-config






  对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被clear。

#{}和${}的区别是什么?

第一个是解析传递进来的参数数据,是预编译处理,
第二个是对传递进来的参数原样拼接在SQL中,是字符串替换。
使用#{}可以有效的防止SQL注入,提高系统安全性。
看看案例实现