一、MyBatis框架
1.1谈一谈对mybatis框架的理解。
mybatis是一款优秀的持久层框架,一个半ORM(对象关系映射)框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手写设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置映射原生类型、接口和java的pojo为数据库中的记录1.2 在mybatis中${}和#{}的区别是什么?
#{}是占位符,预编译处理。${}是字符串替换。
mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement中的set方法来赋值
mybatis在处理${}时,就是把${}替换成变量的值
使用#{}可以有效防止SQL注入,提高系统安全性。
1.3 mybatis编程步骤是怎样的?
1.创建sqlsessionFactory
2.通过sqlsessionfactory创建sqlsession
3.通过sqlsession执行数据库操作
4.调用session.commit()提交事务
5.调用session.close关闭会话
1.4在 mybatis 中,resultType 和 ResultMap 的区别是什么?
如果数据库结果集中的列名和要封装实体的属性名完全一直的话用resultType属性
如果数据库结果集中的列名和要封装实体的属性名有不一致的情况用resultmap属性,通过resultmap手动建立对象关系映射,resultmap要配置一下表和类的一一对应关系,所以说就算字段名和实体类属性名不一样也可以映射出来。
1.5在 Mybatis 中你知道的动态 SQL 的标签有哪些?作用分别是什么?
1.<if> if是为了判断传入的值是否符合某种规则,比如是否不为空。
2.<where>where标签可以用来做动态拼接查询条件,当和if标签配合的时候,不用显示的声明类型where1=1这种条件
3.<foreach>foreach标签可以把传入的集合对象进行遍历,然后把每一项的内容作为参数传到sql语句中。
4.<include>include可以把大量的重复代码整理起来,当使用的时候直接include即可,减少重复代码的编写
5.<set>set适用于更新中,当匹配某个条件后,才会对该字段进行更新操作。
1.6谈一下对mybatis缓存机制的理解?
mybatis有两级缓存,一级缓存是SqlSession级别的,默认开启,无法关闭;二级缓存是Mapper级别的,二级缓存默认是没有开启的,但是可以手动开启。
1.一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session flush或close之后,Session中的所有cache就将清空。
2.二级缓存及其作用域为Mapper,使用二级缓存属性类需要实现serializable序列化接口
3.对于缓存数据更新机制,当某一个作用域进行了增加、删除、更新操作后,默认该作用域下所有的select中的缓存将被clear。
需要在setting全局参数中配置开启二级缓存
当我们的配置文件配置了 cacheEnabled=true 时,就会开启二级缓存,二级缓存是mapper 级别的,如果你配置了二级缓存,那么查询数据的顺序应该为:二级缓存→一级缓存→数据库。
标签:知识点,缓存,映射,作用域,二级缓存,超强,mybatis,属性 From: https://www.cnblogs.com/linwenguan/p/17009932.html