今天在学习mybatis动态sql时,利用foreach拼接sql语句后发现结果并没有赋值到List的对象里吗,里面相应的属性值只有provinceid赋值上去了,但赋值的值也不对,全部都是2
测试代码:
@Test
public void test02(){
SqlSession sqlSession=mybatisutils.getSqlSession();
StudentDao studentDao=sqlSession.getMapper(StudentDao.class);
List<City> cityList=new ArrayList<>();
City city=new City();
city.setProvinceid(3);
cityList.add(city);
City city1=new City();
city1.setProvinceid(2);
cityList.add(city1);
List<City> list=studentDao.selectStudentByIn(cityList);
sqlSession.close();
}
dao.xml
<resultMap id="replace" type="domain.City">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="provinceid" property="provinceid"></result>
</resultMap>
<select id="selectStudentByIn" resultMap="replace">
select id,name,provinceid from city where provinceid in
<foreach collection="list" open="(" item="provinceid" close=")" separator=",">
#{provinceid.provinceid}
</foreach>
</select>
City
package domain;
public class City {
private Integer id;
private String name;
private Integer provinceid;
public City() {
}
public City(Integer id, String name, Integer provinceid) {
this.id = id;
this.name = name;
this.provinceid = provinceid;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getProvinceid() {
return provinceid;
}
public void setProvinceid(Integer provinceid) {
this.provinceid = provinceid;
}
@Override
public String toString() {
return "City{" +
"id=" + id +
", name='" + name + '\'' +
", provinceid=" + provinceid +
'}';
}
}
在此记录一下