多表关联查询
无字段映射
<!--多表查询-->
<!--返回的是数据库的字段属性无法和javaBean的属性一一映射-->
<select id="goodsAndcategory" resultType="java.util.LinkedHashMap">
SELECT g.*,c.category_name FROM t_goods AS g , t_category AS c
WHERE g.category_id = c.category_id limit 5
</select>
public void selectGoodsAndCategory() throws Exception { SqlSession sqlSession = null; try { //获取sql对象 sqlSession = MybatisUtils.openSession(); //执行sql List<Map> list = sqlSession.selectList("goods.goodsAndcategory"); for (Map map:list){ System.out.println(map); } //查看连接状态 Connection conn = MybatisUtils.getConnection(sqlSession); }catch (Exception e){ throw e; }finally { MybatisUtils.release(sqlSession); } }
字段一一映射javabean 多表查询
<!--多表查询-->
<!--resultMap根据javaBean一一映射-->
<!--select中resultMap的名称和resultMap的id名称一一映射,type是数据传输对象-->
<resultMap id="goodsResultMap" type="com.imooc.mybatis.dto.GoodsDto">
<!--id主键property是javaBean对象属性映射,column对数据库字段映射-->
<!--column数据库字段映射到property上-->
<id property="good.goodsId" column="goods_id"/>
<result property="good.title" column="title"/>
<result property="good.categoryId" column="category_id"/>
<result property="good.subTitle" column="sub_title"/>
<result property="good.originalCost" column="original_cost"/>
<result property="good.currentPrice" column="current_price"/>
<result property="good.discount" column="discount"/>
<result property="good.isFreeDelivery" column="is_free_delivery"/>
<result property="category.categoryId" column="category_id"/>
<result property="category.categoryName" column="category_name"/>
<result property="category.categoryLevel" column="category_level"/>
</resultMap>
<select id="jointQuery" resultMap="goodsResultMap">
select g.goods_id,g.title,g.sub_title,g.original_cost,g.current_price,g.discount,g.is_free_delivery,
c.category_name,c.category_level from t_goods as g, t_category as c where g.category_id = c.category_id
limit 5
</select>
public void selectGoodsDto() throws Exception { SqlSession sqlSession = null; try { //获取sql对象 sqlSession = MybatisUtils.openSession(); //执行sql List<GoodsDto> list = sqlSession.selectList("goods.jointQuery"); for (GoodsDto goodsDto:list){ System.out.println(goodsDto.getGood().getTitle()); System.out.println(goodsDto.getCategory().getCategoryName()); System.out.println(goodsDto.getCategory().getCategoryLevel()); } //查看连接状态 Connection conn = MybatisUtils.getConnection(sqlSession); }catch (Exception e){ throw e; }finally { MybatisUtils.release(sqlSession); } }

浙公网安备 33010602011771号