当进进行双表联查的出数据的时候会出现null的情况,或者是实体类的变量名与数据库不符合时查询出现null就可以使用resultMAP元素进行自定义结果映射
操作如下:
①在实体类中把另一张表封装成字段,生成get、set方法

②映射文件中使用resultMap元素定义结果映射
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper映射接口实现接口中的方法-->
<mapper namespace="dao.BananaMapper">
<!--resultMap自动映射-->
<resultMap id="bananamap" type="entity.Banana">
<!--主键列用id标签 其他字段都用result标签
property实体类名 column表中的列名-->
<id property="bid" column="bid"></id>
<!--刚刚不同的字段名,column对应上数据库字段名-->
<result property="bn" column="bname"></result>
<result property="bprice" column="bprice"></result>
<result property="bcolor" column="bcolor"></result>
<result property="btime" column="btime"></result>
<association property="p" javaType="entity.Place">
<!--类对象使用association嵌套 javaType指向实体类-->
<id property="pid" column="pid"></id>
<result property="pname" column="pname"></result>
</association>
<association property="bt" javaType="entity.BananaType">
<id property="tid" column="tid"></id>
<result property="tname" column="tname"></result>
</association>
</resultMap>
<select id="getAll" resultMap="bananamap">
select * from banana join place on banana.pid=place.pid
join bananatype on banana.tid=bananatype.tid
</select>
</mapper>
③测试类运行
本文介绍了如何使用MyBatis的resultMap元素来处理双表联查时可能出现的null值情况,以及实体类变量名与数据库列名不一致的问题。通过在实体类中封装相关字段并创建get、set方法,然后在映射文件中定义resultMap,详细配置每个字段的映射关系,包括关联对象的映射,可以实现自定义结果映射,确保数据正确映射到对应的实体属性。最后,通过测试类运行验证了这种方法的有效性。
352

被折叠的 条评论
为什么被折叠?



