Mybatis一对多查询

MyBatis的一对多查询


首先在seller的model里添加一个Food的list

第一步:在dao层里创建一个SellerDao

package org.peter.dao;

import org.peter.model.Seller;

/**
 * Created by Lenovo on 2017/7/27.
 */
public interface SellerDao {

    public Seller getAllSeller(long id);
}

第二步:在dao包中创建一个SellerDao.xml文件来配置Mapping

<?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="org.peter.dao.SellerDao">
    <resultMap id="BaseResultMap" type="org.peter.model.Seller">
        <id column="id" property="id"/>
        <result property="phonenumber" column="phonenumber"/>
        <result property="windowimg" column="windowimg"/>
        <result property="password" column="password"/>
        <result property="state" column="state"/>
        <result property="sellername" column="sellername"/>
        <result property="windowname" column="windowname"/>
 <!--collection 主要使用来加载list集合 ofType是food 的model-->
 <collection property="foods" ofType="org.peter.model.Food">
            <result property="foodname" column="foodname"/>
        </collection>
    </resultMap>

 <select id="getAllSeller"  parameterType="long" resultMap="BaseResultMap">
        SELECT s.*,f.foodName from food f ,seller s where f.sellerid=s.id AND s.id=#{id}
    </select>
</mapper>

第三步:创建一个main类进行测试

package org.peter.main;

import org.apache.ibatis.session.SqlSession;
import org.peter.dao.SellerDao;
import org.peter.model.Seller;
import org.peter.utils.DBUtils;

/**
 * Created by Lenovo on 2017/7/27.
 */
public class main {
    public static void main(String[] args) {
        select();
    }
    public static void select(){
        SqlSession sqlSession = DBUtils.openSession();
        SellerDao mapper = sqlSession.getMapper(SellerDao.class);
        Seller seller = mapper.getAllSeller(1l);
        System.out.println(seller);
    }
}

以上是Mybatis一对多的查询方法


补充:

resultType:
作用:将查询结果按照sql列名pojo属性名一致性映射到pojo中。
使用场景:常见一些明细记录的展示,比如用户购买商品明细,将关联查询信息全部展示在页面时,此时可直接使用resultType将每一条记录映射到pojo中,在前端页面遍历list(list中是pojo)即可。
resultMap:使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。
association:
作用:将关联查询信息映射到一个pojo对象中。
场合:为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,比如:查询订单及关联用户信息。使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap。
collection:
作用:将关联查询信息映射到一个list集合中。
场合:为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,比如:查询用户权限范围模块及模块下的菜单,可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,这样的作的目的也是方便对查询结果集进行遍历查询。如果使用resultType无法将查询结果映射到list集合中。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值