在 MyBatis 中为每一行结果集创建一个单独的对象
Creating a separate object for each row of results-set in MyBatis
我正在使用 MyBatis 查询数据库。我试图将结果分离到不同的对象中,但 MyBatis 正在组合结果。我的意思是,当我尝试如下所述映射结果时,我得到了 2 Make
个对象的列表,其中丰田在 models
列表中有 3 个 Model
个对象,本田有 2 个 [= models
列表中有 13=] 个对象。
相反,我想获得一个包含 5 个对象的列表,每个对象在 models
列表中都有 1 个 Model
对象。
有人能帮我吗?
我有如下 2 个 POJO
class Make {
long makeId;
String makeName;
List<Model> models;
// Getter and setters
}
class Model {
long modelId;
String modelName;
}
我有一个查询以下面的格式提取结果。
我的结果集看起来像
<resultMap type='Make' id='resultMap'>
<id property='makeId' column='make_id' />
<result property='makeName' column='make_name' />
<collection property="models" ofType="Model" javaType="list">
<id property='modelId' column='model_id' />
<result property='modelName' column='model_name' />
</collection>
</resultMap>
如果我没理解错的话,你基本上是想通过make_id
和model_id
.
的组合键来识别父对象Make
下面的结果图可能return你期待的结果。
<resultMap type='Make' id='resultMap'>
<id property='makeId' column='make_id' />
<id column="model_id" /><!-- added -->
<result property='makeName' column='make_name' />
<collection property="models" ofType="Model" javaType="list">
<id property='modelId' column='model_id' />
<result property='modelName' column='model_name' />
</collection>
</resultMap>
通过从 <id />
中省略 property
属性,列 model_id
不会映射到 Make
,但用于标识它。
我正在使用 MyBatis 查询数据库。我试图将结果分离到不同的对象中,但 MyBatis 正在组合结果。我的意思是,当我尝试如下所述映射结果时,我得到了 2 Make
个对象的列表,其中丰田在 models
列表中有 3 个 Model
个对象,本田有 2 个 [= models
列表中有 13=] 个对象。
相反,我想获得一个包含 5 个对象的列表,每个对象在 models
列表中都有 1 个 Model
对象。
有人能帮我吗?
我有如下 2 个 POJO
class Make {
long makeId;
String makeName;
List<Model> models;
// Getter and setters
}
class Model {
long modelId;
String modelName;
}
我有一个查询以下面的格式提取结果。
我的结果集看起来像
<resultMap type='Make' id='resultMap'>
<id property='makeId' column='make_id' />
<result property='makeName' column='make_name' />
<collection property="models" ofType="Model" javaType="list">
<id property='modelId' column='model_id' />
<result property='modelName' column='model_name' />
</collection>
</resultMap>
如果我没理解错的话,你基本上是想通过make_id
和model_id
.
Make
下面的结果图可能return你期待的结果。
<resultMap type='Make' id='resultMap'>
<id property='makeId' column='make_id' />
<id column="model_id" /><!-- added -->
<result property='makeName' column='make_name' />
<collection property="models" ofType="Model" javaType="list">
<id property='modelId' column='model_id' />
<result property='modelName' column='model_name' />
</collection>
</resultMap>
通过从 <id />
中省略 property
属性,列 model_id
不会映射到 Make
,但用于标识它。