Mybatis学习(二)关联映射

本文详细介绍了在MyBatis框架中如何实现一对一和一对多的关联映射,包括XML配置文件的修改、Java实体类的设计等方面的内容。

1.一对一映射

(1)修改UserMapper.xml

<?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 namespace="com.xx.dao.UserDao">
    <resultMap id="UserResultMap" type="com.xx.entity.User">
        <id column="ID" property="id" jdbcType="DECIMAL"/>
        <result column="NAME" property="name" jdbcType="VARCHAR"/>
        <result column="SEX" property="sex" jdbcType="CHAR"/>
        <result column="AGE" property="age" jdbcType="DECIMAL"/>
      <!--property指的是User类中定义的变量名称 column表示传入的参数 select指向select标签的id --> <association property="info" column="id" select="getTeacher"/> </resultMap> <insert id ="addUser" parameterType="com.xx.entity.User"> INSERT INTO TB_USER(ID,NAME,SEX,AGE) VALUES (#{id},#{name},#{sex},#{age}) </insert> <select id="getTeacher" parameterType="int" resultType="com.xx.entity.StudentInfo"> select * from STUDENTINFO t WHERE t.AGE = #{id} </select> <select id="getUser" resultMap="UserResultMap"> SELECT * FROM TB_USER </select> </mapper>

 (2)添加StudentInfo.java

 (3)在User.java中实例化一个StudentInfo变量

 

2.一对多映射

(1)修改UserMapper.xml

<?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 namespace="com.xx.dao.UserDao">
    <resultMap id="UserResultMap" type="com.xx.entity.User">
        <id column="ID" property="id" jdbcType="DECIMAL"/>
        <result column="NAME" property="name" jdbcType="VARCHAR"/>
        <result column="SEX" property="sex" jdbcType="CHAR"/>
        <result column="AGE" property="age" jdbcType="DECIMAL"/>
    <!-- fetchType表示懒加载 --> <collection property="info" column="id" select="getTeacher" javaType="ArrayList" ofType="com.xx.entity.StudentInfo" fetchType="lazy"/> </resultMap> <insert id ="addUser" parameterType="com.xx.entity.User"> INSERT INTO TB_USER(ID,NAME,SEX,AGE) VALUES (#{id},#{name},#{sex},#{age}) </insert> <select id="getTeacher" parameterType="int" resultType="com.xx.entity.StudentInfo"> select * from STUDENTINFO t WHERE t.AGE = #{id} </select>
<select id="getUser" resultMap="UserResultMap"> SELECT * FROM TB_USER </select> </mapper>

 (2)将一对一映射中实例化变量改为变量List,其余同上 

 

 

转载于:https://www.cnblogs.com/soup227/p/6689810.html

MyBatis 中使用中间表进行关联映射可以通过两种方式实现:一对多关系和多对多关系。 对于一对多关系,可以使用嵌套查询或者嵌套结果映射来实现。首先,需要在映射文件中定义两个 SQL 语句,一个用于查询主表的数据,另一个用于查询中间表的数据。然后,在主表的映射文件中使用 `<collection>` 元素来引用中间表的映射关系。通过 `select` 属性指定中间表查询的 SQL 语句,并通过 `column` 属性指定主表和中间表之间的关联字段。接下来,在中间表的映射文件中定义查询结果的映射关系。最后,在需要使用中间表关联查询的地方调用主表的查询方法即可。 对于多对多关系,可以使用两个一对多的关联来实现。首先,需要在映射文件中定义三个 SQL 语句,分别用于查询主表、中间表和从表的数据。然后,在主表的映射文件中使用 `<collection>` 元素来引用中间表的映射关系,并通过 `select` 属性指定中间表查询的 SQL 语句和结果映射。接着,在中间表的映射文件中使用 `<collection>` 元素来引用从表的映射关系,并通过 `select` 属性指定从表查询的 SQL 语句和结果映射。最后,在需要使用多对多关联查询的地方调用主表的查询方法即可。 这样,就可以通过 MyBatis 的映射关系来实现中间表的关联映射。希望对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值