MyBatis结果集映射
MyBatis结果集映射在什么情况下使用?**
当定义的实体类的属性名和数据库的列名不一致时,需要建立属性名和列名的映射关系,也就是mybatis的结果集映射。
使用xml配置文件操作
<resultMap type="返回类型" id="xxxMap" autoMapping="true">
<!--主键一般使用标签id,不论实体类属性和数据库列名是否一致,都应该定义-->
<id column="ID" property="ID"/>
<!--实体类的属性名和列名不一致时-->
<result column="name123" property="name"/>
<!--实现(一对多)(多对一)的主要配置 在执行当前sql语句是,根据该表中的共同拥有的列去查到另一张表的信息 在该映射条件执行时,必须要有一个对应的接口,用来查询别一张表的方法 -->
<association property="属性值" column="相关联列名属性" select="接口类全路径.方法名"></association>
</resultMap>
<select id="接口中对应方法名" resultMap="xxxMap">
SELECT * FROM GRADE
</select>
</mapper>
使用注解完成一对多及多对一
public interface StudentMapper {
/** *原理和上边一样,只不过是换种表式方式,更加简单,容易理解 *注意如果有多个联系,需要用 * @Results( * { * @Result(property="返回类型1",column="相关联的列名1",one=@one(select="接口1.方法名")), * @Result(property="返回类型2",column="相关联的列名2",many=@Many(select="接口2.方法名")) * } * ) * 注意:one=@one 是表式一对一 many=@Many 是表示一对多 */
@Results(
@Result(property="返回类型",column="关联的列名",many=@Many(select="接口.方法名"))
)
@Select("select * from student where sid=#{id}")
public Student queryStudentBySid(Integer id);
}
还没有评论,来说两句吧...