mybatis使用注解完成多表的查询操作

文章介绍了在MyBatis中使用注解进行一对一和一对多数据操作的方法,包括@Select、@Results、@Result和@Many的使用。在一对一操作中,详细解释了如何通过column属性设置连接条件,而在一对多操作中,将one替换为many来处理集合数据。文章指出,虽然注解在简单场景下方便,但在复杂多表操作时,推荐使用XML配置文件以提高可读性和维护性。
摘要由CSDN通过智能技术生成

一对一操作:

@Select("select *,user_id as userId from tb_order where order_number=#{orderNumber}")
    @Results(
            {
                    @Result(
                            property = "user",
                            javaType = User.class,
                            one = @One(select = "com.yh.mapper.UserMapper.selectById"),
                            /*当column中的值赋值之后,查询不到id的值,使用别名在设置一个字段用于传输或者赋值*/
                            column = "userId"
                    )
            }
    )
    List<Order> selectByOrderNumber(String orderNumber);
@Select("select * from tb_user where id=#{id}")
    List<User> selectById(Integer id);
public class Order {
    private Integer id;

    private Long userId;

    private String orderNumber;

    private User user;

    private List<OrderDetail> orderdetails;

}

@result中的参数介绍:

  • property:代表如实体类Order中的User user中的user
  • javaType:代表User类的class文件
  • one:代表的是连接另一张表的sql映射
  • colum:代表的是order表向user表sql传输的数据,相当于两个表的连接条件。

一对多操作:

@Select("select *,user_id as userId ,id as uid from tb_order where order_number =#{orderNumber}")
    @Results(
            {
                    @Result(
                            property = "orderdetails" ,javaType = List.class,
                            many = @Many(select = "com.yh.mapper.OrderDetailsMapper.selectByOrderId"),
                            column = "uid"
                    )
            }
    )
    List<Order> oneToMany(String orderNumber);

 

@Select("select * from tb_orderdetail where order_id=#{orderId}")
    List<OrderDetail> selectByOrderId(Integer orderId);
@Data
public class Order {
    private Integer id;

    private Long userId;

    private String orderNumber;

    private User user;

    private List<OrderDetail> orderdetails;

}

与一对一不同的是,@resule中的one属性变为了many属性。

总结

使用简单的单表操作使用注解确实简单,但是如果复杂的多表操作,使用注解会导致更加复杂。

所以再次建议大家在使用单表操作时使用注解开发;

在复杂的多表操作时使用xml配置文件进行开发。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值