1.XXXMapper.xml中:
namespace标识mapper接口的完整路径。
resultMap标签表示手动映射数据库字段和实体类属性,resultMap中的id唯一标识该resultMap,type表示实体类的完整路径。
insert标签:id表示接口中的方法名,parameterType表示sql语句中的参数类型,对应实体类的完整路径。
foreach标签:collection表示接口方法传入的参数,如果使用了@param去重新表示参数名,那就用注解后的名字。
if标签:它中的test属性的值是判断,true就执行它的条件语句。
order by默认增序排列。
Group by的select的字段要满足出现在聚合函数中或者group by后。
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据
参数parameterType:代表传入sql语句中的参数的类型
返回类型用resultType或resultMap表示.
resultType:自动映射。前提:实体类中的属性名要与数据库表中的字段名对应。
resultMap:手动映射-当实体类中的属性名与数据库表中的字段名不一致时使用。
2.#{参数}:参数名称可以任意取
注意以下区别:
#{}: select * from user where id = ?; 占位符时用#,此时?=='参数'
${}: select * form user where username like '%${参数}%'; 字符串拼接时用$
使用 select * from user where username like "%"#{value}"%"防止sql注入
${}中的参数名称必须是value.
#{}中的参数可以是类型可以是value,如#{item.name,jdbcType = String}
3.
select LAST_INSERT_ID()
insert into user (username,birthday,address,sex) values (#{username},#{birthday},#{address},#{sex})
4.Mapper接口开发需要遵循以下规范:
1)、Mapper.xml文件中的namespace与mapper接口的类路径相同。
2)、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3)、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
4)、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
5.标签:
1).
2).提取公共sql部分,可重用
select * from user
6.foreach标签
如果接口传过来的参数为Integer[]类型的,则collection="array",此时parameterType属性去掉 如果接口传过来的参数为List
collection:maper接口传递过来的参数,如果接口参数列表有@param ,那么collection就是@param注解的参数名。
item:循环遍历的值
open:遍历开始
close:遍历结束
separator:分隔符
批量删除用户,当传入的参数类型为List<类名>这样的集合时,parameterType的值为类名。