MyBatis是一个java数据持久层框架,通过将sql语句与java对象的映射配置在xml文件中,实现了简化数据库操作的功能,使得开发者更方便的对数据库进行操作.
常用标签:
<select> 查询语句 <insert> 插入语句 <update> 更新语句 <delete> 删除语句 <resultMap> 定义结果集与java对象之间的映射关系 <result> 配置普通属性的映射规则 column 结果集中的列 property java对象的属性 <id> 配置主键映射规则 <association> 配置关联对象的关系, 指定查询结果中一对一关联关系 <collection> 配置集合属性的映射关系, 指定查询结果中一对多的关联关系 动态sql 根据不同条件生成对应的sql语句 <id> 一般用来判断参数是否为空,防止空指针异常 <trim> 一般用来修剪sql片段的开头或结尾的指定字符 <foreach> 一般用于sql查询中集合迭代,并动态生成多个sql片段,可以在 IN 子句中使用 <foreach> 元素来动态生成多个参数。
mybatis缓存机制:用于应用程序和数据库之间缓存数据,以提高查询性能, 只要分为两个类型: 本地缓存和二级缓存
本地缓存:
mybatis本地缓存是默认开启的,指在同一个sqlSession中,对相同的查询进行缓存
当执行相同查询时,mybatis会将查询结果缓存到内存中,下次查询时,会直接上缓存中获取数据,而不会去数据库中执行查询操作
本地缓存是sqlsession级别,只在当前会话中有效,会话失效,本地缓存也会被清空
二级缓存:
mybatis二级缓存是一种跨sqlSession的缓存,可以将共享数据给统一个命名空间下的不同sqlSession
当开启二级缓存后,查询结果会被缓存到二级缓存中,同一个命名空间下的不同sqlSession可以共享缓存数据
二级缓存默认是关闭的,需要在mybatis配置文件中进行配置开启
${}和#{}都是用来传参的
${}是字符串替换的方式在sql语句中,{}会直接替换成参数的值,不会进行预编译处理
#{}是预编译的方式,#{}会被替换成一个占位符(?) 可以防止依赖注入,提高安全性 因此我们大多用#{}