mybatis一对多查询,具体如下

img

img


2个实体类,表就不放了,都是对应的,在命令行中执行查询语句以及结果如下

img


下面的查询语句和上面命令行的语句是一样的


<resultMap id="user_orders" type="xml.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
        <collection property="desList" ofType="xml.Des">
            <id property="id" column="did"/>
            <result property="weapon" column="weapon"/>
        </collection>
    </resultMap>

    <select id="test_5" resultMap="user_orders">
        select * from user ,des where id=did
    </select>

接口

List<User> test_5();

测试语句

List<User> userList = mapper.test_5();
        for (User user : userList) {
            List<Des> desList = user.getDesList();
            for (Des des : desList) {
                System.out.println(des.getWeapon());
            }
        }

问题来了,执行测试语句后,只输出了一个弓箭,这是为啥,我的预期是(弓箭,书,弓箭),为啥仅输出了一个(弓箭)

试着把id的值改为不同的值,id为主键,是唯一的