java项目关联关系_Mybatis一对多关联关系映射实现过程解析

这篇文章主要介绍了Mybatis一对多关联关系映射实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

一对多关联关系只需要在多的一方引入少的一方的主键作为外键即可。在实体类中就是反过来,在少的一方添加多的一方,声明一个List 属性名 作为少的一方的属性。

用户和订单就是一对多的关系,从用户角度看就是一对多关系,从订单的角度来看就是多对一的关系。

/**

* 订单持久化类

*/

public class Orders {

private Integer id;

private String number;

setter/getter方法

}

/**

*用户持久化类

*/

public class User {

private Integer id;

private String username;

private String address;

private List ordersList;//用户关联的订单

setter/getter方法

}

用户mapper接口

/**

* 用户Mapper接口

*/

public interface UserMapper {

//用户和订单为一对多关系,那么此时应该返回一个用户list里面包含了订单信息

List userOrdersinfo(int id);//通过用户id返回它的订单信息

}

用户的mapper映射文件

select u.*,o.id as orders_id,o.number

from tb_user u,tb_orders o

where u.id=o.user_id and u.id=#{id}

用户业务层接口

/**

* 用户业务层接口

*/

public interface UserWithOrdersInfo {

List selectUserOrdersInfo(int id);

}

用户业务层实现类

@Service

public class UserWithOrdersInfoImpl implements UserWithOrdersInfo {

@Autowired

private UserMapper userMapper;

@Override

public List selectUserOrdersInfo(int id) {

return userMapper.userOrdersinfo(id);

}

}

控制器类

@Controller

public class UserOrdersController {

@Autowired

private UserWithOrdersInfo userWithOrdersInfo;

@RequestMapping("/userordersinfo/{id}")

public String getUserOrdersInfo(@PathVariable int id, Model model){

model.addAttribute("userordersinfo",userWithOrdersInfo.selectUserOrdersInfo(id));

return "userordersinfo";

}

}

页面

xmlns="http://www.w3.org/1999/xhtml">

person信息页面

用户id姓名用户地址订单id订单号

用户id用户姓名用户地址订单id订单号订单id订单号

运行结果

b4f3274035541da77c9e7f0e0d81fc9c.png

一对多关联关系总结:

一对多关系从不同的角度看,关系是不一样的,但是最终都是一样的,在编写mapper映射文件的时候使用的是元素。也是使用嵌套查询更加方便,需要解决的问题是如何在页面展示查询出来的一对多关联关系的结果。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值