qaq
配置
配置数据库信息
添加@MapperScan注解
预编译sql语句
#{…}
- 执行时会将#{…}替换为?,自动设置参数值
- 参数传递都使用
- 可以防止sql注入
1 |
|
${…}
- 直接将参数拼接在sql语句中,会存在注入问题
- 如果对表名、列表进行动态设置时使用
1 |
插入
1 |
|
采用类封装,注意传的参数是类的属性,需要驼峰命名
1 |
|
获取主键
会自动将生成的主键值,赋值给emp对象的id属性
1 |
更新
1 |
|
查询
通过主键
- 给变量取别名,将下划线命名法映射为驼峰命名
1 |
|
- 通过@Results, @Result注解手动映射封装
1 |
|
- 开启mybatis的驼峰命名自动映射开关, a_column -> aColumn
1 | //在application.properties中 |
条件查询
- name作模糊匹配需要用$而不是#
- 会有注入问题
1 |
|
- 可以使用concat函数解决
1 |
|
XML映射文件
- XML文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
- XML文件在resources文件夹下面,和Mapper接口的路径相仿
- XML文件的namespace属性为Mapper接口全限定名一致
- XML文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致
Mapper接口:
1 |
|
XML映射文件:
1 | <mapper namespace="com.itheima.mapper.EmpMapper"> |
动态sql
<if>用于判断条件是否成立- 如果条件为true,则拼接sql
<if test="name != null">...</if><where>用于动态生成where关键字- 如果里面条件都不成立就不生成
- 可以自动处理里面条件里多余的
and <set>动态地在行首插入set关键字,删掉额外的逗号
1 | <select id="list" resultType="com.itheima.pojo.Emp"> |
foreach遍历
- collection:遍历的集合
- item:遍历出来的元素
- separator:分隔符
- open:遍历开始前拼接的sql片段
- close:遍历结束后拼接的sql片段
SQL语句:
1 | delete from emp where id in (1,2,3); |
接口方法:
1 | //批量删除 |
XML映射文件
1 | <delete id="deleteByIds"> |
sql标签
1 | <sql id="01"> |