Return Object inside Object with MyBatis 列表
Return list of Object inside Object with MyBatis
我在使用 MyBatis 时返回另一个对象中的对象列表时遇到问题。我的主要对象如下所示:
private Long id;
private String symbol;
private List<TypePermission> typePermissions;
我的映射器看起来像这样
<resultMap type="CalendarType" id="calendarTypeMap">
<result column="id" property="id"/>
<result column="symbol" property="symbol"/>
<collection property="TypePermissions" resultMap="TypePermissions"/>
</resultMap>
<resultMap id="TypePermissions" type="TypePermission">
<result property="roleId" column="roleId"/>
<result property="permissionSymbol" column="permissionSymbol"/>
</resultMap>
我的目标是得到这样的对象:
content:[
"id":id,
"symbol":symbol,
"TypePermissions":{
"roleId":roleId,
"permissionSymbol":permissionSymbol
}
]
当我执行 sql 查询时,出现以下错误 cannot find symbol TypePermissions
,因为主 SELECT 尝试 select 行,例如 TYPEPERMISSIONS、ID、SYMBOL
我在网上搜索过,但没有找到任何有用的东西。你能帮我指出我做错了什么吗?
请 post 你的 select 代码段,我认为这样可以:
<select id="selectCalendarType" parameterType="int" resultMap="calendarTypeMap">
SELECT c.id,
c.symbol
t.roleId,
t.permissionSymbol
FROM CalendarType c
LEFT JOIN TypePermission t ON c.id = t.c_id
WHERE c.id = #{id}
</select>
我想你会得到的实际上是这样的:
content:{
"id":id,
"symbol":symbol,
"TypePermissions":[{
"roleId":roleId,
"permissionSymbol":permissionSymbol
}]
}
有关此的更多信息,您可以阅读此示例 Nested_Results_for_Collection
我在使用 MyBatis 时返回另一个对象中的对象列表时遇到问题。我的主要对象如下所示:
private Long id;
private String symbol;
private List<TypePermission> typePermissions;
我的映射器看起来像这样
<resultMap type="CalendarType" id="calendarTypeMap">
<result column="id" property="id"/>
<result column="symbol" property="symbol"/>
<collection property="TypePermissions" resultMap="TypePermissions"/>
</resultMap>
<resultMap id="TypePermissions" type="TypePermission">
<result property="roleId" column="roleId"/>
<result property="permissionSymbol" column="permissionSymbol"/>
</resultMap>
我的目标是得到这样的对象:
content:[
"id":id,
"symbol":symbol,
"TypePermissions":{
"roleId":roleId,
"permissionSymbol":permissionSymbol
}
]
当我执行 sql 查询时,出现以下错误 cannot find symbol TypePermissions
,因为主 SELECT 尝试 select 行,例如 TYPEPERMISSIONS、ID、SYMBOL
我在网上搜索过,但没有找到任何有用的东西。你能帮我指出我做错了什么吗?
请 post 你的 select 代码段,我认为这样可以:
<select id="selectCalendarType" parameterType="int" resultMap="calendarTypeMap">
SELECT c.id,
c.symbol
t.roleId,
t.permissionSymbol
FROM CalendarType c
LEFT JOIN TypePermission t ON c.id = t.c_id
WHERE c.id = #{id}
</select>
我想你会得到的实际上是这样的:
content:{
"id":id,
"symbol":symbol,
"TypePermissions":[{
"roleId":roleId,
"permissionSymbol":permissionSymbol
}]
}
有关此的更多信息,您可以阅读此示例 Nested_Results_for_Collection