我试图将我的Oracle SQL查询结合起来,将我的POJO填充到一个mybatis调用中。我想从我的DAO返回一个ParentClass对象列表,每个对象都包含一个ChildClass对象作为元素以及一个String键。
目前我的SQL查询在Toad中按预期工作,这意味着它会为预期数量的parentKeys返回一行中每个parentKey的所有数据。当我转移到我的Spring Web服务但是我从mybatis查询中找不到任何数据,但没有错误。我之前使用mybatis之前从未使用过resultMap,所以我的问题是我是否正确实现了这个,如果没有,需要添加/修改什么?
ParentClass.java
public class ParentClass {
private String parentKey;
private ChildClass childClass;
}
ChildClass.java
public class ChildClass {
private String childElementA;
private String childElementB;
}
myMapper.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="myMapper">
<resultMap id="parentClassResultMap" type="myPackage.ParentClass">
<result property="parentKey" column="PARENT_KEY" />
<association property="childClass" resultMap="childClassResultMap" />
</resultMap>
<resultMap id ="childClassResultMap" type="myPackage.ChildClass">
<result property="childElementA" column="CHILD_ELEMENT_A" />
<result property="childElementB" column="CHILD_ELEMENT_B" />
</resultMap>
<select id="getData" parameterType="String" resultMap="parentClassResultMap">
SELECT PARENT_KEY,
MY_TABLE.CHILD_ELEMENT_A AS CHILD_ELEMENT_A,
MY_TABLE.CHILD_ELEMENT_B AS CHILD_ELEMENT_B
FROM MY_TABLE
WHERE MY_TABLE.PARENT_KEY IN (SELECT MY_TABLE.PARENT_KEY
FROM MY_TABLE
WHERE MY_TABLE.PARENT_KEY LIKE #{ key })
</select>
</mapper>
MyDao.java
@Repository
public class MyDao {
@Autowired
SqlSession sqlSession;
public List<ParentClass> getData(String key) {
return sqlSession.selectList("myMapper.getData", key);
}
}