mybatis一对多和多对一怎么配置

   2025-01-31 4990
核心提示:MyBatis的一对多和多对一关系的配置需要使用两个标签:collection和association。一对多关系的配置步骤如下:创建两个实体类,一

MyBatis的一对多和多对一关系的配置需要使用两个标签:<collection><association>

一对多关系的配置步骤如下:

创建两个实体类,一个代表一的一方,一个代表多的一方。在一的一方的实体类中添加一个集合属性,用于存储多的一方的实体对象。在Mapper.xml文件中,使用<collection>标签配置一对多关系。在<collection>标签中,指定property属性为一的一方的集合属性,ofType属性为多的一方的实体类,select属性为查询多的一方数据的SQL语句。在查询一的一方数据的SQL语句中,使用<collection>标签的select属性的值作为子查询,并将查询结果映射到一的一方的集合属性中。

多对一关系的配置步骤如下:

创建两个实体类,一个代表多的一方,一个代表一的一方。在多的一方的实体类中添加一个实体对象属性,用于存储一的一方的实体对象。在Mapper.xml文件中,使用<association>标签配置多对一关系。在<association>标签中,指定property属性为多的一方的实体对象属性,javaType属性为一的一方的实体类,column属性为多的一方的外键列名。在查询多的一方数据的SQL语句中,使用<association>标签的select属性的值作为子查询,并将查询结果映射到多的一方的实体对象属性中。

配置示例:

一对多关系配置示例:

<resultMap id="userMap" type="User">  <id property="id" column="id"/>  <result property="name" column="name"/>  <collection property="orders" ofType="Order" select="getOrdersByUserId" column="id"/></resultMap><select id="getUserById" parameterType="int" resultMap="userMap">  SELECT * FROM user WHERE id = #{id}</select><select id="getOrdersByUserId" parameterType="int" resultMap="orderMap">  SELECT * FROM orders WHERE user_id = #{userId}</select>

多对一关系配置示例:

<resultMap id="orderMap" type="Order">  <id property="id" column="id"/>  <result property="name" column="name"/>  <association property="user" javaType="User" column="user_id" select="getUserById"/></resultMap><select id="getOrderById" parameterType="int" resultMap="orderMap">  SELECT * FROM orders WHERE id = #{id}</select><select id="getUserById" parameterType="int" resultMap="userMap">  SELECT * FROM user WHERE id = #{id}</select>

这些示例假设存在两个表:userorders,其中orders表中的外键列为user_id

 
 
更多>同类维修知识
推荐图文
推荐维修知识
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  网站留言