介绍 MyBatis中的一对多对象关联查询查询
测试
Mybatis多对一对象关联查询
这期内容当中小编将会给大家带来有关怎么在MyBatis中实现一个表关联查询功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
MyBatis中的一对多对象关联查询查询
模拟情景,商品与商品详情:一件商品可以对应多个商品详情信息,即从商品吗?商品详情方向看,属于一对多。在一对多关系中,需要在属于一的一方的实体类中添加多的一方的集合,一般为List<祝辞类型
,//(省去了获取和设置的方法) ,public class Goods  { private 才能;Integer  goodsId ; private 才能;String  title ; private 才能;String  subTitle ; private 才能;Float  originalCost ; private 才能;Float  currentPrice ; private 才能;Float  discount ; private 才能;Integer  isFreeDelivery ; private 才能;Integer  categoryId ;//才能在一对多关系中,在一方添加多的一方的集合 private 才能;List< GoodsDetail>, goodsDetailLists ,, }
在“一方“实体类对应的xml文件中,添加配置信息
& lt; !,,,对多对象关联查询 ,,,resultMap可用于说明一对多或者多对一的映射逻辑 ,,,id 是resultMap属性引用的标志 ,,,type 指向一个的实体(货物) ——比; & lt;才能resultMap id=皉mGoods1",类型=癱om.imooc.mybatis.entity.Goods"比; & lt; !,,,,,映射商品对象的主键到goods_id字段——比; ,,,& lt; id 列=癵oods_id",财产=癵oodsId"祝辞& lt;/id> & lt; ! ,,,收集的含义是,在 ,,,sql语句得到结果后,对所有商品对象遍历得到goods_id字段值, ,,,并代入到goodsDetail命名空间的selectByGoodsId的sql中执行查询 ,,,将得到的“商品详情”集合赋值给goodsDetailsList对象 ——比; ,,,& lt; collection 财产=癵oodsDetailLists",选择=癵oodsDetail.selectByGoodsId" ,,,,,,,,,列=癵oods_id"祝辞& lt;/collection> & lt;才能/resultMap> & lt;才能select id=皊electOneToMany", resultMap=皉mGoods1"比; ,,,select *,得到t_goods limit 0,,, 1 & lt;才能/select>
在“多方”对应的xml文件中添加
& lt; mapper 名称空间=癵oodsDetail"比; & lt;才能select id=皊electByGoodsId", parameterType=癐nteger" ,,,,,resultType=癱om.imooc.mybatis.entity.GoodsDetail"比; ,,,select *,得到t_goods_detail where goods_id =, # {value} & lt;才能/select> & lt;/mapper>
至此,关于商品到商品详情的一对多查询配置就完成了。
测试
,//对 @Test才能 public 才能;void  selectOneToMany () { ,,,SqlSession SqlSession =, null ; ,,,试着{ ,,,,,sqlSession =, MybatisUtils.openSession (),; ,,,,,List, list =, sqlSession.selectList (“goods.selectOneToMany"); ,,,,,for (Goods g :列表){ ,,,,,//输出商品和该商品的详情信息数量 ,,,,,,,System.out.println (g.getTitle (), +,“:“, +, g.getGoodsDetailLists () .size ()); ,,,,,} ,,,}catch (Exception e) { ,,,,,e.printStackTrace (); ,,,}finally { ,,,,,MybatisUtils.closeSession (sqlSession); ,,,} ,,}
Mybatis多对一对象关联查询
在上诉情景中,商品详情?商品即为多对一的关系
在多对一关系中,需要在多的一方的实体类中添加一的一方的实体对象
public class GoodsDetail { private 才能;Integer  gdId ; private 才能;Integer  goodsId ; private 才能;String  gdPicUrl ; private 才能;Integer  gdOrder ;//多才能对一:在多的一方添加一的一方的实体 private 才能;Goods  Goods ; }
在多的一方xml文件中添加
& lt; !,,,多对一关系——比; & lt;才能resultMap id=皉mGoodsDetail",类型=癱om.imooc.mybatis.entity.GoodsDetail"比; ,,,& lt; id 列=癵d_id",财产=癵dId"祝辞& lt;/id> ,,,& lt; result 列=癵oods_id",财产=癵oodsId"祝辞& lt;/result> ,,,& lt; !——, goods.selectById 为goods.xml根据主键id查找商品信息。——比; ,,,& lt; association 财产=癵oods",选择=癵oods.selectById",列=癵oods_id"祝辞& lt;/association> & lt;才能/resultMap> & lt;才能select id=皊electManyToOne", resultMap=皉mGoodsDetail"比; null null null null null null null null null null null null null null null null null null null怎么在MyBatis中实现一个表关联查询功能