- Mybatis的一级、二级缓存?
- 本地缓存,其作用于是在session中,当session进行close、flush就会清除缓存,默认打开一级缓存。
- 二级缓存和一级缓存机制相同,不同的是二级缓存作用于为mapper,默认不开启,开启则需要实现序列化,在配置文件中进行cache
- 什么时候使用二级缓存?
- 如果多个namespace 中有针对于同一个表的操作,比如Blog 表,如果在一个namespace 中刷新了缓存,另一个namespace 中没有刷新,就会出现读到脏数据的情况。所以,推荐在一个Mapper 里面只操作单表的情况使用。
- 多对一,一对多?
- 多对一
- 多方添加一方的实体类
- property:实体类变量名称
- JavaType:实体类返回值
- column:多方的外键
- select:调用多方的根据部门编号查询
- 一对多
- 一方添加多方的集合
- property:集合的变量名称
- ofType:集合的泛型实体
- JavaType:com.util.List
- select:调用多方的根据外键查询
- Mybatis中的 ${ } 和 #{ }的区别?
- 举例:select * from user where name = "root";
- 解析前:select * from user where name = #{name};
- 解析后:select * from user where name = ?;
- 解析前:select * from user where name = ${name};
- 解析后:select * from user where name = "root";
-
能防止sql注入,$不能防止sql注入。所以推荐使用#
- 什么是Mybatis?
- 半orm的框架,内部封装了JDBC,使用的时候只需要关注SQL,不需要关注加载驱动,创建连接等繁杂的过程等。
- mybatis的优缺点?
- 优:基于sql编程,相当灵活,能够很好的与spring集成在一起,可以很好的的与个个数据库兼容。
- 缺:需要编写大量的sql,字段多关联表多时,需要开发人员对sql有一定的功底。
- MyBatis 框架适用场合?
- MyBatis 框架专注于SQL,适用于对性能要求高、需要变化比较多的项目,是一个灵活的持久层解决方案。
- MyBatis 与 Hibernate 有哪些不同?
- MyBatis:它不是一个完整的orm框架,需要我们自己手写SQL。
- Hibernate:它是一个完成的orm持久层框架,不需要写SQL,直接使用实体类加上 And Or Find自动生成SQL。
- 当实体类中的属性名和表中的字段名不一样 ,怎么办?
- 使用别名,order_id or orderID
- 使用Result进行映射,colum是数据库字段,property是实体类字段。
- 模糊查询 like 语句该怎么写?
// 第 1 种:在 Java 代码中添加 sql 通配符。
string wildcardname = “%smi%”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like #{value}
</select>
// 在 sql 语句中拼接通配符,会引起 sql 注入
String wildcardname = “smi”;
list<name> names = mapper.selectlike(wildcardname);
<select id=”selectlike”>
select * from foo where bar like "%"#{value}"%"
</select>
- 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问,这个 Dao 接口的工作原理是什么?Dao 接口里的方法,参数不同时,方法能重载吗?
- Dao接口即Mapper接口。
- Mapper 接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略。
- 如何获取自动生成的(主)键值?
- 在添加语句后面跟加上
- keyColumn="id" 返回增长的列
- usegeneratedkeys:开启自增
- keyproperty:需要自增的列
- usegeneratedkeys=”true” keyproperty=”id”
- 在 mapper 中如何传递多个参数?
- Mybatis 动态 sql 有什么用?执行原理?有哪些动态 sql?
- Mybatis 动态SQL可以在xml映射文件内,以标签的形式运行。
- 执行原理:根据表达式的值,完成逻辑、判断 动态的拼接SQL。
- Mybatis 提供 了 9 种动 态 sql 标签 :trim | where | set | foreach | if | choose| when | otherwise | bind。
- Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
- 不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复;如果没有配置 namespace,那么 id 不能重复;
- Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?
- Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载
- 什么是 MyBatis 的接口绑定?有哪些实现方式?
- 接口绑定就是把接口和SQL语句绑定到一起。
- 接口使用@Parma注解标注参数,xml中的namespace对应接口的全路径。
- 使用 MyBatis 的 mapper 接口调用时有哪些要求?
- 简述 Mybatis 的插件运行原理,以及如何编写一个插件。
- MyBatis @Select、@Update注解使用
https://www.cnblogs.com/Twittery/p/14577306.html