目录
<if>,<where>和<set>
<if>标签的使用
<where>标签的引入
<set>标签的引用
<sql> <include>include
一、注解方式
1. 删除一条数据的操作。
但建议保持一致,增强可读性。
sql注入的问题:
#{}生成了预编译sql语句,可以有效防止sql注入的问题。
2.添加操作
#{}内容为实体类中的属性名
主键返回
但这样的添加操作拿不到添加后的主键值,需要进一步加对应的注解@Options(keyProperty = "id", useGeneratedKeys = true)
useGeneratedKeys = true(表示需要返回主键值)
keyProperty = "id"(获得的主键会封装到,emp对象的id属性当中)
3.修改操作
4.查询操作
数据封装,开启驼峰命名
有三种不同的方式,第三种最常用
1.起别名
2.手动结果映射
3.开启驼峰命名(实体类属性名必须严格遵守驼峰命名的规则)
条件查询
二、xml映射文件
1.配置文件的规则
tip:在resource创建文件时用 / (com/itheima/mapper)
2.配置入门操作 点击 MyBatis中文网
3.resultType:单条记录所封装的类型
如何快速获得namespace与resultType(在查询语句中需要返回类型)的全类名
4.为什么要按照规则配置
三、动态sql
动态SQL:随着用户的输入或外部条件的变化而变化的SQL语句。
<if> ,<where和<set>
<if>标签的使用
用于判断条件是否成立。使用test 属性进行条件判断,如果条件为true,则拼接SQL。
<where>标签的引入
当上面的查询条件name为空时 就会出现where and gender = {gender} 的情况 就会报错 此事呢就需要使用<where>标签
1.<where>动态判断if条件是否成立,如果都不成立 直接不会生成where
2.自动除去条件下的and和or
<set>标签的引用
如果只有第一条条件成立 在sql语法的后面会出现 逗号,所以用<set>消除
<foreach>foreach
批量是删除
collection:遍历的集合
item:遍历出来的元素
separator:分隔符(,)
open:遍历开始前拼接的SQL片段 (
close:遍历结束后拼接的SQL片段 )
<sql> <include>include
<sql>:定义可重用的SQL片段。
<include>:通过属性refid,指定包含的sql片段。
问题的引入
问题处理
<sql>的放置位置
tip:个人笔记。来源黑马程序员JavaWeb开发教程