ManyToOne 查询
多对一查询
需求场景
tgoods中每一个商品(goodsid 字段)在 t_goods_detail 中对对应了多个商品详情(gd_pic_url 字段)。 如何通过gd_pic_url goods_id 查询到其对应的单个 goods_id 字段呢?
修改 GoodsDetail 实体类
在MyBatis\src\main\java\indi\chester\mybatis\entity\GoodsDetail.java 成员属性中添加一个 Goods 对象,用来表示每一个 GoodsDetail 对象所对应的唯一一个 Goods 对象。
private Goods goods;
public Goods getGoods() {
return goods;
}
public void setGoods(Goods goods) {
this.goods = goods;
}
添加 selectManyToOne 标签
MyBatis\src\main\resources\mappers\goods_detail.xml 添加下面两个标签:
<!-- 将SELECT * FROM t_goods_detail LIMIT 0,1 的结果转换为一个个 GoodsDetail对象, 然后将goods_id传入到
goods.selectById 中的查询语句进行查询,查询结果放回到 GoodsDetail对象中的 goods-->
<resultMap id="rmGoodsDetail" type="indi.chester.mybatis.entity.GoodsDetail">
<id column="gd_id" property="gdId"/>
<association property="goods" select="goods.selectById" column="goods_id"/>
</resultMap>
<select id="selectManyToOne" resultMap="rmGoodsDetail">
SELECT * FROM t_goods_detail LIMIT 0,1
</select>
修改 MyBatisTest.java
MyBatis\src\test\java\MyBatisTest.java 下添加这个方法:
@Test
public void testManyToOne () throws Exception{
SqlSession sqlSession=null;
try {
sqlSession=MyBatisUtils.openSession();
List<GoodsDetail> list = sqlSession.selectList("goodsDetail.selectManyToOne");
for (GoodsDetail gd: list){
System.out.println(gd.getGdPicUrl()+ " : "+gd.getGoods().getTitle());
}
}catch (Exception e){
e.printStackTrace();
throw e;
}finally {
MyBatisUtils.closeSession(sqlSession);
}
}
这个方法就是选中 tgoodsdetail 中的一条数据,根据 goodsid 去 tgoods 中查询对应的商品, 最后将商品和其对应的 gd_pic_url打印出来。
运行结果:
12:14:56:163 [main] DEBUG goodsDetail.selectManyToOne -==> Preparing: SELECT * FROM t_goods_detail LIMIT 0,1
12:14:56:209 [main] DEBUG goodsDetail.selectManyToOne -==> Parameters:
12:14:56:239 [main] DEBUG goods -Cache Hit Ratio [goods]: 0.0
12:14:56:240 [main] DEBUG goods.selectById -====> Preparing: select * from t_goods WHERE goods_id=?
12:14:56:240 [main] DEBUG goods.selectById -====> Parameters: 739(Integer)
12:14:56:244 [main] DEBUG goods.selectById -<==== Total: 1
12:14:56:249 [main] DEBUG goodsDetail.selectManyToOne -<== Total: 1
http://img05.meituncdn.com/group1/M00/04/63/987d578f4a05497190497ca46391bfb4.jpg : 亲润 孕妇护肤品豆
Last updated