1.MyBatis是什么?
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
简单的来说就是:Mybatis是一个实现数据持久化的开源框架,简单理解为就是对JDBC进行封装。开发者只需要关注sql语句本身,而不是去花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
2. MyBatis优点
与JDBC减少了一半以上的代码量,
Mybatis是简单的持久化框架,简单,容易学习,
相对灵活 sql写在xml中,从程序代码中直接分离,降低耦合,便于管理优化,
支持动态sql,
提供映射标签 支持对象与数据库中的ORM字段映射;
3.#{}和${}的区别是什么?
#{}是预编译处理,${}是字符串替换。
mybatis在处理#{}时,会将sql中的#{}替换为?号,调用preparedStatement的set方法来赋值。
mybatis在处理时 , 就 是 把 {}时,就是把时,就是把{}替换成变量的值。
使用#{}可以有效的防止sql注入,提供系统安全性。
4.Mybatis的一级、二级缓存
一级缓存:基于PerpetualCache的hashmap本地缓存,其存储作用域为session,当session flush或close后,该session中的所有cache就将清空,默认打开一级缓存;
二级缓存与一级缓存机制相同,默认也是采用PerpetualCache,hashmap存储,不同在于其存储作用域为Mapper(Namespaces),并且可自定义存储源,如Ehcache。默认不打开二级缓存,要开启二级缓存,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置cache标签;
对于缓存数据更新机制,当某一个作用域(一级缓存session/二级缓存Namespaces)进行了C/U/D操作后,默认该作用域下所有select中的缓存将被clear。
5.MySQL的动态SQL
动态SQL是MyBatis的一个强大特性,可以运用动态SQL语句标签方便我们在SQL中实现各种逻辑
常用标签如下:<if>:条件选择
<choose>:相当于Java中的switch,用于条件选择
<where>:简化SQL中的where
<set>:解决动态更新语句
<trim>:灵活的去除多余的关键字
<foreach>:迭代遍历一个集合
我们简单说几个:
if用法
<select id="selectStudentsByMajor" parameterType="string" resultMap="stuCardMap"> select stu.*,sc.* from student stu left join student_card sc on stu.stu_id=sc.stu_id
<if test="major!=null and major!=''">
where sc.major=#{major}
</if> </select>
trim标签:可用于拼接动态SQL语句
该标签有以下属性:
prefix:前缀
suffix:后缀
prefixOverrides:前缀覆盖,可用于智能的处理”and”,”or”关键字
suffixOverrides:后缀覆盖,可用于处理update语句中中多余的”,”
<trim prefix="前缀 内容"
suffix="后缀 内容"
prefixOverrides="前缀覆盖"
suffixOverrides="后缀覆盖">
</trim>
foreach标签的属性主要有 item,index,collection,open,separator,close。
item表示对集合进行迭代时每一个对象的别名,
index指定一个名字,用于表示在迭代过程中,每次迭代的位置,
open是前缀,表示该语句以什么开始,
separator表示在每次迭代元素之间以什么符号作为分隔符,
close是后缀,表示以什么结束,
collection指定需要遍历的集合;
说明:(1) 如果是单参数且参数类型是集合时,collection的值为list
(2) 如果是单参数且参数类型是数组时,collection的值为array
(3) 如果是多参数且参数类型是map或者实体类对象时, collection的值为对应map的键名或者对象的属性名
资料链接:https://blog.csdn.net/yhc813/article/details/117718754