Mybatis常见问题

1.#和$的区别和联系

1.1#是占位符,会对Sql进行预编译,相当于?;$是做Sql拼接,有sql注入的隐患

1.2#不需要关注数据类型,Mybatis自动实现类型转换,$必须自己判断数据类型联系

两者都支持通过@Param注解,指定参数名称,来获取参数值。

 

2.谈谈你对Mybatis的理解?

对于这个问题,官方这样介绍:是支持定制化Sql,存储过程以及高级映射的优秀的持久层框架。Mybatis避免了几乎所有的JDBC代码和手工设置参数以及抽取结果集。Mybatis使用简单的XML或注解来配置和映射基本体,将接口和java的pojos映射成数据库中的记录。

Mybatis的优点:

2.1.简单易学

2.2.灵活

2.3.解除Sql和程序代码的耦合

2.4.提供映射标签,支持对象与数据库的orm字段关系映射

2.5.提供对象关系映射标签,支持对象关系组建维护

2.6.提供xml标签,支持编写动态sql

 

3.Mybatis缓存

一级缓存:Mybatis的一级缓存的作用域是session,当openSession( )后,如果执行相同的Sql(相同语句参数),Mybatis不进行执行sql,而是从缓存中命中返回。

二级缓存:Mybatis的二级缓存的作用域是一个mapper的namespace,同一个namespace中查询sql可以从缓存中命中。二级缓存是可以跨session的。

posted on 2018-09-04 13:57  lichangyun  阅读(208)  评论(0编辑  收藏  举报