一、单个对象
基本类型
public Long getCount(@Param("userName") String userName);
直接返回对应的基本类型,如:Long
<select id="getCount" resultType="java.lang.Long"></select>
实体对象
public User getOneUser(@Param("userName") String userName);
直接返回对应的实体对象,如:User
<select id="getOneUser" resultType="com.jayknoxqu.entity.User"></select>
二、Collection集合
List<E>、 Set<E>
public List<User> getUserList(@Param("userName") String userName);
返回对应的集合元素"E"
的类型
<select id="getUserList" resultType="com.jayknoxqu.entity.User"></select>
三、Map集合
单条Map<K,V>
public Map<String,String> getOneUser(@Param("userName") String userName);
直接返回Map本身
<select id="getOneUser" resultType="java.util.Map"></select>
多条Map<K,V>
需要通过@MapKey
指定Map<K,V>中的"K"
,"K"为"V"对象的属性名,如果不指定则会抛出异常org.apache.ibatis.exceptions.TooManyResultsException
@MapKey(value="id")
public Map<Long,User> getUserMap(@Param("userName") String userName);
返回对应的Map<K,V>集合中"V"
的类型
<select id="getUserMap" resultType="com.jayknoxqu.entity.User"></select>
多条Map<K, List<K,V> >
SysAreaDao.java
@MapKey(value = "pid")
public Map<Integer, Map<Integer, List<Integer, SysArea>> getSysArea();
SysAreaMapper.xml
<resultMap id="SysAreaResultMap" type="java.util.Map">
<id column="pid" property="pid"/>
<collection property="children" javaType="java.util.ArrayList" ofType="com.jayknoxqu.entity.SysArea">
<id column="id" property="id"/>
<result column="pid" property="pid"/>
<result column="name" property="name"/>
</collection>
</resultMap>
<select id="getSysArea" resultMap="SysAreaResultMap">
SELECT * FROM sys_area
</select>