在我的AppMapper.xml中,我有一个类似的查询:
<select id="getCompleteDetails" parameterType="Map" resultType="String">
SELECT * FROM PersonProfile WHERE ID = #{id}
</select>
假设它将返回所有字符串的名称,地址,年龄,职业。
我用这个正确吗?
<select id="selectPerson" parameterType="int" resultType="String">
或者因为有多个值要接收,所以它应该类似于
<select id="selectPerson" parameterType="int" resultMap="PersonProfileObj">
如果我使用
"resultMap=PersonProfileObj"
,我知道我需要像创建resultMap<resultMap type="com.test.PersonProfileObj" id="PersonProfileObj">
<result property="Name" column="Name">
<result property="Address" column="Address">
<result property="Age" column="Age">
<result property="Profession" column="Profession">
</resultMap>
//我的resultMap正确吗?
*我询问是否使用resultType = String或resultMap“ PersonProfileObj”
我的理解正确吗?
最佳答案
resultType
指定给定的映射SQL语句返回的对象的类型(如果返回了多个对象,则为列表的元素)。如果指定resultType="String"
,则查询应恰好返回字符串类型的一个字段。
如果您需要返回多个字段,则可以:
创建一个对象并将这些字段映射到对象属性。
返回地图。在这种情况下,行中的每个字段都将是映射中的一个条目,其键等于列名,值等于字段值。
当您返回一个对象时,您可以使用默认映射来设置该对象的属性,这些属性与列名相对应,或者您可以指定resultMap
,它可以更灵活地设置column -> property
映射。
还要注意,在autoMapping
上有一个resultMap
属性,该属性将列隐式映射到具有相同名称的属性,因此,在您的示例中,假定列与属性具有相同的名称,则足以进行此映射:
<resultMap type="com.test.PersonProfileObj" id="PersonProfileObj" autoMapping="true">
</resultMap>
还请注意,通常希望为结果映射指定
id
,尤其是在集合/关联映射中使用查询或具有联接的情况下。