mybatis框架,是一个数据层持久框架
框架前身是ibatis
是直接面向sql语句进行设计的半自动框架,它内部封装了通过jdbc访问数据库的操作,将程序中的sql语句配置在mapper映射文件中。
特点:轻量,执行效率较hibernate高
功能使用灵活,但可用的已封装好的功能少
框架基于原生sql设计,导致代码的可移植性较差
因为每一个数据层接口需要写相对应的映射文件导致sql语句的编写工作量较大。
mybatis的动态sql
通过带有特殊功能的标签,根据参数的判断结果,自动构建调整需要的sql语句
赋值标签:用来替代set命令
条件标签:用来替代普通条件命令where
以上两个标签,当标签内无内容(sql语句)时,标签消失
判断标签:sql语句
test属性为判断条件,根据判断结果来决定是否添加if标签内的语句
标签使用时需要注意,和and时,逗号应放在sql语句后,最后一个if标签不加;and应放在sql语句前,第一个if标签不加
循环标签:<foreach collection=“keys” items=“s” open="(" close")" separator=“or”>
collection:本属性必须指定,指定的是入参集合的key值
item:表示集合中每一个元素进行迭代时的别名
index:指定一个名称,用于表示迭代过程中,每次迭代的位置
open:表示该语句以什么开始(in条件语句是以“(”开始)
close:表示该语句以什么结束(in条件语句是以“)”结束)
separator:表示每次迭代之间以什么符号作为分隔符
动态sql正是mybatis功能灵活性的体现
mybatis关联查询
需要从多张数据表查询数据时,通过关联查询,查询一张表的信息后会自动查询其余关联表所需要的信息
步骤:在实体类中,添加实体类属性
在一对多/多对一的一方,属性的类型为list,泛型为多方的类型;在多方,属性类型为一方的数据类型
在数据称接口对应的映射文件修改
配置被关联查询的结果集集合
配置的关联查询,在查询的主要结果集配置中关联标签
一对多,标签
多对一,标签
两个标签的通用属性
property用于配置实体类属性名
column用于配置查询时需要哪个字段的数据
select用于配置查询语句的id名称
配置关联查询的sql
标签
id属性的值对应关联标签中的select属性的值
resultMap属性为被关联查询的结果集
框架的搭建
0、环境准备
准备jar和sql文件,jar包放在lib文件夹,需build path
准备mybatis的配置文件
准备辅助工具(仅在单独使用mybatis时)
1、编写实体类:实体类的编写大体与数据表一致
2、编写数据层接口:在dao包中编写,通常名为XxxMapper或XxxDao。其中Xxx表示实体类名。
在接口中声明需要的数据操作方法,通常表包括增删改查的基础方法和分页操作的方法
3、编写数据接口对应的映射文件:在dao包中编写,映射文件通常命名为XxxMapper.xml
其中Xxx需要与对应接口的实体类名一致
在映射文件中,编写对应接口中指定方法的执行sql
collection:本属性必须指定,指定的是入参集合的key值
在mybatis中,参数都会放在一个map中
参数为基本类型,变量名为key,变量值为value
参数为对象,对象的属性名为key,变量值为value
参数为List,list为key,该List为value
参数为数组,array为key,该数组为value
参数为map,键值不变