本篇内容主要讲解“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<Orders> ordersList;//用户关联的订单 setter/getter方法}
用户mapper接口
/** * 用户Mapper接口 */public interface UserMapper { //用户和订单为一对多关系,那么此时应该返回一个用户list里面包含了订单信息 List<User> userOrdersinfo(int id);//通过用户id返回它的订单信息}
用户的mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="cn.jason.bootmybatis.mapper.UserMapper"> <resultMap id="UserWithOrdersInfo" type="User"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="address" column="address"/> <!--一对多关系映射 ofType表示属性集合中的元素的类型,List<Orders>属性即Orders类 --> <collection property="ordersList" ofType="Orders"> <id property="id" column="orders_id"/> <result property="number" column="number"/> </collection> </resultMap> <!--关联查询sql--> <select id="userOrdersinfo" parameterType="Integer" resultMap="UserWithOrdersInfo"> 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} </select></mapper>
用户业务层接口
/** * 用户业务层接口 */public interface UserWithOrdersInfo { List<User> selectUserOrdersInfo(int id);}
用户业务层实现类
@Servicepublic class UserWithOrdersInfoImpl implements UserWithOrdersInfo { @Autowired private UserMapper userMapper; @Override public List<User> selectUserOrdersInfo(int id) { return userMapper.userOrdersinfo(id); }}
控制器类
@Controllerpublic 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"; }}
页面
<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns="http://www.w3.org/1999/xhtml"><head> <meta charset="UTF-8"> <title>person信息页面</title></head><body><table> <thead> <tr> <th>用户id</th> <th>姓名</th> <th>用户地址</th> <th>订单id</th> <th>订单号</th> </tr> </thead> <tr th:each="userordersinfo:${userordersinfo}"> <td th:text="${userordersinfo.id}">用户id</td> <td th:text="${userordersinfo.username}">用户姓名</td> <td th:text="${userordersinfo.address}">用户地址</td> <td th:text="${userordersinfo.ordersList.get(0).id}">订单id</td> <td th:text="${userordersinfo.ordersList.get(0).number}">订单号</td> <td th:text="${userordersinfo.ordersList.get(1).id}">订单id</td> <td th:text="${userordersinfo.ordersList.get(1).number}">订单号</td> </tr></table></body></html>
运行结果
一对多关联关系总结:
一对多关系从不同的角度看,关系是不一样的,但是最终都是一样的,在编写mapper映射文件的时候使用的是<collection>元素。也是使用嵌套查询更加方便,需要解决的问题是如何在页面展示查询出来的一对多关联关系的结果。
到此,相信大家对“Mybatis一对多关联关系映射实现过程介绍”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
分享文章:Mybatis一对多关联关系映射实现过程介绍
网页地址:https://www.cdcxhl.com/article38/jeddsp.html
成都网站建设公司_创新互联,为您提供定制开发、品牌网站制作、网站营销、微信公众号、建站公司、动态网站
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联