最近在学SSM框架,刚刚学完了MyBatis框架,简单总结一下以供复习参考
1:什么是mybatis?
mybatis是一个支持普通sql查询,存储过程以及高级映射的持久层框架。
2:mybatis的优点?
具有高度的灵活性,可优化性和易于维护等特点
3:mybatis主要涉及两个核心对象,SqlSessionFactory和SqlSession
SqlSessionFactory是mybatis 框架中十分重要的对象,它是单个是句酷映射关系经过编译后的内存镜像,起作用主要是用 来创建SqlSession.通常一个数据库对应一个SqlSessionFactory,所以在创建时建议使用单例模式。
SqlSession是mybatis框架中另外一个重要的对象,它是应用程序与持久层进行交互操作的一个单线程对象,其主要作用是 进行持久化操作。
4:常用配置文件元素
Properties(通过外部配置文件来定义属性,还可以通过配置<properties>以及通过方法参数传递的方式来获取属性值).
Settings
typeAliase 设置别名
Mapper用于指定 mybatis的映射文件
5:常用映射文件的主要元素
<select>
keyProperty作用是将插入或更新操作的返回值赋值给实体类的某个属性,通常会设置联合主键,可以在多个值之间用逗号 隔开。SqlSessionFactory
UseGeneratedKeys会使mybatis使用jdbc的getGeneratedKeys()方法来获取数据库内部产生的主键。(仅对insert和update 有效)
KeyColumn用于设置第几列是主键,当需要联合主键时,值可以用逗号隔开
<insert><update><delete><sql><resultMap>
6:mybatis中动态SQL的主要元素
<If> 判断语句,用于单条件分支判断
<choose>(<when><otherwise>)相当于Java中的switch..case..default语句,用于多条件分支判断
<when><trim><set>辅助元素,用于处理一些sql拼装,特殊字符问题
<foreach>循环语句,常用于in语句等列举条件中
Item:配置的时循环中当前的元素
Index:配置的时当前元素在集合的位置
Collection:配置的list是传递过来的参数类型
open和close:配置的是以什么符号将这些集合类型的属性名等
Separator:各个元素之间的间隔符
<bind>从OGNL表达式中创建一个变量,并将其绑定到上下文,通常用于模糊查询的SQL中
7:mybatis的关联映射
通过数据库中的表进行描述:
一对一:在任意一方引入对方主键作为外键
一对多:在”多“的一方,添加”一“的一方主键作为外键
多对多:产生种间关系表,引入两张表的主键作为外键,两个成为联合主键或使用新的字段作为主键
通过对象描述:
一对一:class A{B b} classB{A a}
一对多:class A{List<B> b} classB{A a}
多对多:class A{List<B> b} classB{List<A> a}
Propert:指定映射到的实体类对象属性,与表字段一一对应。
Column:指定表中对应的字段
javaType:指定映射到实体队形属性的类型
Select:指定一如嵌套查询的子sql语句,该属性用于关联映射的嵌套查询
fetchType:指定在关联查询时是否启用延迟加载,fetchType 属性有lazy 和eager 两个属性值,默认值为lazy(默认关联映射延 时加载)