MyBatis是一个基于Java的持久层框架,可以通过XML或注解方式进行SQL映射,支持关联查询和嵌套查询。下面是一些关联查询和嵌套查询的技巧:
<association>
或<collection>
标签来进行关联查询。<association>
用于一对一关联查询,<collection>
用于一对多关联查询。<!-- 一对一关联查询 -->
<select id="selectOrderWithUser" resultType="com.example.Order">
select * from orders o
left join users u on o.user_id = u.id
</select>
<!-- 一对多关联查询 -->
<select id="selectUserWithOrders" resultType="com.example.User">
select * from users u
left join orders o on u.id = o.user_id
</select>
<select>
标签中使用select
属性引用另一个SQL查询。<select id="selectUserWithOrders" resultType="com.example.User">
select * from users
where id = #{userId}
and id in (select user_id from orders where status = 'completed')
</select>
<resultMap>
标签自定义结果映射,可以实现更复杂的关联查询。<resultMap id="userMap" type="com.example.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<collection property="orders" ofType="com.example.Order">
<id column="order_id" property="id"/>
<result column="order_name" property="name"/>
</collection>
</resultMap>
通过以上技巧,可以在MyBatis中实现灵活、高效的关联查询和嵌套查询。