输出映射 resultType/resultMap
resultType
使用resultType进行结果映射时,查询的列名和映射的pojo属性名完全一致,该列才能映射成功。
如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象;
如果查询的列名和映射的pojo属性名有一个一致,就会创建pojo对象。
输出简单类型
当输出结果只有一列时,可以使用ResultType指定简单类型作为输出结果类型。
案例:输出一个count(*)
输出POJO单个对象
输出POJO列表
总结:
输出单个pojo对象和pojo列表时,mapper映射文件中的resultType的类型是一样的,mapper接口的方法返回值不同。
同样的mapper映射文件,返回单个对象和对象列表时,mapper接口在生成动态代理的时候,会根据返回值的类型,决定调用selectOne方法还是selectList方法。
resultMap
如果查询出来的列名和属性名不一致,通过定义一个resultMap将列名和pojo属性名之间作一个映射关系。
- 定义resultMap
2、使用resultMap作为statement的输出映射类型
if和where
- If标签:作为判断入参来使用的,如果符合条件,则把if标签体内的SQL拼接上。
注意:用if进行判断是否为空时,不仅要判断null,也要判断空字符串‘’;
- Where标签:会去掉条件中的第一个and符号。
SQL片断
foreach 遍历
另一种遍历,参数直接传入id集合
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO agent(job_number,department,region,username,idcard,company_rankings,department_rankings,region_rankings,
distance_first_company,distance_first_department,distance_first_region)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.job_number},#{item.department},#{item.region},#{item.username},#{item.idcard},#{item.company_rankings},
#{item.department_rankings},#{item.region_rankings},#{item.distance_first_company},#{item.distance_first_department},#{item.distance_first_region})
</foreach>
</insert>