【发布时间】:2016-02-07 00:31:27
【问题描述】:
是否可以在 myBatis resultMap 中映射嵌套的 java.sql.ResultSet?
例如。假设我有一个这样定义的过程映射:
<select id="selectBlog" statementType="CALLABLE">
{call getCarsByYear(
#{year,jdbcType=INTEGER,mode=IN},
#{results, jdbcType=CURSOR, mode=OUT, javaType=java.sql.ResultSet, jdbcType=CURSOR, resultMap=cars}
)}
</select>
还有我的映射器。它返回汽车对象列表,还返回经销商列表(嵌套的 CURSOR):
<resultMap id="cars" type="some.package.Car">
<result property="name" column="car_name">
<!-- here is my problem -->
<collection property="dealerships" column="dealerships_rf" ofType="some.package.Dealership">
<result property="model" column="model" />
<result property="year" column="year" />
</resultMap>
<!-- dealership resultMap of type some.package.Dealership -->
这里的问题是,当我检查生成的 java 对象时,dealerships 是一个空列表。
我编写了一些普通的 java.sql JDBC 代码,它运行良好。任何人都可以让我走上正确的道路吗?我完全迷失了这个。
提前致谢。
这是预期的 SQL 输出:
Car
|name |dealerships|
|nissan|ref_cursor|
Dealership
|location |established|....
|.... |1974 |...
车型:
public class Car {
private String name;
private List<Dealership> dealerships;
// getters & setters ...
}
public class Dealership {
private String model;
private Integer year;
// getters & setters ...
}
【问题讨论】:
-
更新了描述以提供有关该问题的更多信息。 @diziaq
-
请添加过程'getCarsByYear'的PL/SQL代码。
-
我认为您只是没有在 XML 文件中关闭
标记。可能是这样吗?
标签: java xml oracle jdbc mybatis