在表关联映射的xml文件中操作
- 查询第一个表的数据
<select id="getUserByIdStep" resultMap="MyUserByStep">
select * from user where id=#{id}
</select>
- 设置resultMap
<resultMap type="com.atBing.bean.User" id="MyUserByStep">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="passwd" property="passwd"/>
<result column="dept_id" property="dept_id"/>
<!--
association定义关联对象封闭规则
select:表明当前属性是调用select中的方法查出的结果
column:指定将哪一列的值传给这个方法【注意:是有值的那个表的列而不是方法要查询的那个表的列】
-->
<association property="dept" select="com.atBing.dao.DeptMapper.getDeptById" column="dept_id">
</association>
</resultMap>
在column那里跌了一个大跟头,浪费了一个多小时,难过。
coulumn中的列名我把他写成了select中的方法要查的那个表里的列名,这是一个大错啊,这个列名都没有值,我本来就是要查这个表了还把这个表的列名放到方法里!!!!
经过多次尝试后将colum中的列名改为了我第一步中查询的那个表的列名,因为第一步中我已经查询出来这个列名里面的值了,然后映射这第二步,将这个值传到了select方法中,成功了!!!
- user表(第一步中查询的表)
- dept表(第二步中select方法中查询的表)
- 第二步中select中调用的查询方法