在测试用例中无法通过list对象获取第二张表的单个信息

在测试用例中无法通过list对象获取第二张表的单个信息

测试用例:

@Test
public void testSelect() throws Exception{
SqlSession sqlSession=null;
List<Goods> list= null;
try {
sqlSession=MybatisUtils.openSession();
list = sqlSession.selectList("goods.selectOneToMany");
for(Goods goodss:list){
System.out.println(goodss.getName()+":"+goodss.getList());
}
} catch (Exception e) {
throw e;
} finally {
MybatisUtils.closeSession(sqlSession);
}
}

goods实体类(第一张表):

package com.batis.entity;

import java.util.List;

public class Goods {
private Integer id;
private Integer regNo;
private String name;
private String sex;
private Integer age;
private Integer grade;
private String major;
private List<GoodsManger> list;

public List<GoodsManger> getList() {
return list;
}

public void setList(List<GoodsManger> list) {
this.list = list;
}

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public Integer getRegNo() {
return regNo;
}

public void setRegNo(Integer regNo) {
this.regNo = regNo;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Integer getGrade() {
return grade;
}

public void setGrade(Integer grade) {
this.grade = grade;
}

public String getMajor() {
return major;
}

public void setMajor(String major) {
this.major = major;
}

@Override
public String toString() {
return "Goods{" +
"id=" + id +
", regNo=" + regNo +
", name='" + name + '\'' +
", sex='" + sex + '\'' +
", age=" + age +
", grade=" + grade +
", major='" + major + '\'' +
'}';
}
}

goods.xml:

<?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="goods">
<select id="selectAll" resultType="com.batis.entity.Goods">
select * from student
</select>
<select id="selectParameter" parameterType="Integer" resultType="com.batis.entity.Goods">
select * from student where id=#{id}
</select>
<select id="selectScreen" parameterType="java.util.Map" resultType="com.batis.entity.Goods">
select * from student where age &gt; #{age} and sex =#{sex}
</select>

<resultMap id="goodsM" type="com.batis.entity.Goods">
<id column="reg_no" property="regNo"></id>
<collection property="list" select="goodsManger.selectAll" column="reg_no"/>
</resultMap>
<select id="selectOneToMany" resultMap="goodsM">
select * from student limit 0,1
</select>
</mapper>


goodsmanger实体类(第二张表):

package com.batis.entity;

public class GoodsManger {
private Integer regNo;
private String phone;
private String address;

public Integer getRegNo() {
return regNo;
}

public void setRegNo(Integer regNo) {
this.regNo = regNo;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

@Override
public String toString() {
return "GoodsManger{" +
"regNo=" + regNo +
", phone=" + phone +
", address='" + address + '\'' +
'}';
}
}

goodsmanger.xml:

​<?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="goodsManger">
<select id="selectAll" parameterType="Integer" resultType="com.batis.entity.GoodsManger">
select * from student_manger where reg_no=#{regNo}
</select>
</mapper>

在mybatis-config.xml中的参数与视频讲解类似,其中也添加了两张表的mapper

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,经测试上述贴出代码是可以获取数据的,这里同学描述的“获取第二张表的单个信息”是什么意思呢?建议同学描述清楚~

若同学最新贴出的截图是已经解决的效果,同学可忽略老师的回复哟~

祝学习愉快~

  • 慕村4629685 提问者 #1

    老师您好,我贴出的截图的意思是我无法调出第二张表的单个信息,正如截图所示,goodss.getList().后面无法获取list对象的属性成员,如写入goodss.getList().getPhone()程序报错

    2021-09-11 15:04:33
  • 好帮手慕小脸 回复 提问者 慕村4629685 #2

    同学你好,如何想要单独获取某个值,需要对此进行遍历,修改后的代码如下所示:

    https://img1.sycdn.imooc.com//climg/613c8411093006d115380719.jpg

    祝学习愉快~​

    2021-09-11 18:26:06
慕村4629685 提问者 2021-09-11 08:13:01
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师