使用resultMap从mybatis查询返回null结果

时间:2018-04-02 20:45:45

标签: java sql oracle mybatis spring-mybatis

我试图将我的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);
    }
}

0 个答案:

没有答案