mybatis使用注解实现一对多关联查询

本文介绍如何使用MyBatis注解实现一对多的关联查询,通过@Select和@Result注解定义SQL语句及结果映射,实现章节与题目之间的关联查询。

              mybatis使用注解实现一对多关联查询

@Select("select id,mockexam_section as section,id as sectionId"
			+ " from t_p_qb_mockexam_section"
			+ " where mockexam_charpter_id = #{charpterId} and is_delete = 0"
			+ " order by mockexam_section_idx asc")
@Results({
@Result(property = "questionList",column = "sectionId",many = @Many(select = "com.zikaoshu.baseinfo.mapper.BaseinfoQuestionMapper.listQuestionResDto"))})
List<SectionQuestionDto> listSectionQuestionDto(@Param("charpterId") Integer charpterId);
	
	
@Select("select id,type,discuss_title as discussTitle,stem1,material,a,b,c,d,e,answer,analysis,mockeaxm_section_id as sectionId"
			+ " from t_p_qb_question_mockexam"
			+ " where mockeaxm_section_id = #{id} and is_delete = 0"
			+ " order by q_sequence,gmt_create asc")
List<QuestionResDto> listQuestionResDto(@Param("id") Integer id);

 

MyBatis-Plus本身没有专门针对一对查询注解,但可以结合MyBatis注解MyBatis-Plus是基于MyBatis的增强工具)来实现一对查询。以下是实现步骤和示例代码: ### 定义实体类 假设存在`Order`(订单)和`OrderItem`(订单项)两个实体,一个订单对应个订单项。 ```java import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.util.List; @TableName("orders") public class Order { @TableId private Long id; private String orderNo; private List<OrderItem> orderItems; // getters and setters } @TableName("order_items") public class OrderItem { @TableId private Long id; private Long orderId; private String productName; // getters and setters } ``` ### 定义Mapper接口 在Mapper接口中使用`@Results`、`@Result`和`@One`、`@Many`注解实现一对查询。 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.*; import java.util.List; @Mapper public interface OrderMapper extends BaseMapper<Order> { @Select("SELECT * FROM orders") @Results({ @Result(property = "id", column = "id"), @Result(property = "orderNo", column = "order_no"), @Result(property = "orderItems", column = "id", many = @Many(select = "com.example.mapper.OrderItemMapper.getOrderItemsByOrderId")) }) List<Order> getOrdersWithItems(); } @Mapper public interface OrderItemMapper extends BaseMapper<OrderItem> { @Select("SELECT * FROM order_items WHERE order_id = #{orderId}") List<OrderItem> getOrderItemsByOrderId(Long orderId); } ``` ### 解释 - `@Select`:用于编写SQL查询语句。 - `@Results`和`@Result`:用于映射查询结果到实体类的属性。 - `@Many`:表示一对关系,`select`属性指定查询关联数据的方法。 通过以上步骤,就可以使用MyBatis-Plus的注解实现一对查询
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值