mapper接口
mapper接口定义规范
1.接口名必须和mapper映射文件名一致
例子:接口:UserMapper == UserMapper.xml
2.接口包名和映射文件路径一致
Cn.wolfcode.mapper.UserMapper cn.wolfcode.mapper.UserMapper.xml
3.接口中定义的方法与dao接口一致
执行原理
将mapper接口和mapper映射文件定义在同名的文件夹下
mapper接口定义在src/main/java下
mapper映射文件定义在src/main/resources下
优点
简化项目结构
保证参数传递的安全性
Mybatis框架参数处理
用mybatis框架创建mapper接口解析mapper映射文件;
自定义的参数名mybatis框架不识别,无法解析,mybatis提供了arg1,
arg2或者param1或param2组合完成使用
在mybatis3.x版本提出了在mapper接口中方法参数上贴上指定注解完成参数传递 @param(“参数名”)
Mybatis框架中#{},${}在mapper文件中传参的区别
${}默认获取的是db.properties的值
通过@param注解解决该问题
#{}和¥{}之间的区别
#{}编写的参数名通过对应的get方法,获取值,并在sql语句中使用引号拼接,适用于传递参数
¥{}编写的参数名,到指定表中查询指定名字列,将列名作为参数拼接到sql语句中,适用于ORDER BY 或者GROUP BY语句中传递参数操作,通过key-value的形式获取value
动态SQL标签
<where>标签
<if test=”判断条件”>
判断内容SQL语句
<if>
<where>
2 SET标签
当执行修改操作,如果传递新的值,使用新的值修改原有值,如果没有新的值,则依然使用原有值显示,在UPDATE中使用
<set>
<if test=”判断条件”>
判断内容
<if>
<set>
foreach标签
实际开发中用于批量删除(常用)/添加/修改
<foreach
collection=””open=”” item=””separator=””close=””>
1,表示存储传递参数的集合/数组名@param注解中定义的名
- IN函数开始的符号“(”
- 当前参数获取的指定类对象
- 多个参数的分割符号
- IN函数结束的符号“)”
表与表之间的关系
关联关系
一对一:单向,双向
一对多或多对一
多对多