当进进行双表联查的出数据的时候会出现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>
③测试类运行