若查询出的数据只有一条,可以通过实体类对象或者集合接收;
若查询出的数据由多条,一定不能通过实体类对象进行结果的接收,此时会抛出异常,如:TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 5;可以通过List集合进行接收
/*
* 根据id查询用户信息
* */
User GetUserById(@Param("id") Integer id);
<!--User GetUserById(@Param("id") Integer id);-->
<select id="GetUserById" resultType="User">
select * from t_user where id=#{id};
</select>
/*
* 查询所有用户信息
* */
List<User> GetAllUser();
<!-- List<User> GetAllUser();-->
<select id="GetAllUser" resultType="User">
select * from t_user;
</select>
/*
查询用户信息的总记录数
* */
Integer getCount();
<!-- Integer getCount();-->
<select id="getCount" resultType="Integer">
select count(*) from t_user;
</select>
/*
* 根据id查询用户信息返回值为一个Map集合
* */
Map<String,Object> getUserInMapById(@Param("id") Integer id);
<!--Map<String,Object> getUserInMapById(@Param("id") Integer id);-->
<select id="getUserInMapById" resultType="map">
select * from t_user where id=#{id};
</select>
以查询id=3为例,其输出的结果为map集合:
{password=123456, sex=?, id=3, age=23, email=12345@qq.com, username=admin}
以查询所有用户信息为map集合为例:
一条数据视为一个map集合,通过list嵌套map集合实现多条数据的查询,如下:
/*
* 查询所有用户信息为map集合,一个表中会有多条数据,一个map集合对应一条数据,因此还需将所有map集合放在list集合中
* */
List<Map<String,Object>> getAllUserInMap();
<!--Map<String,Object> getAllUserInMap();-->
<select id="getAllUserInMap" resultType="map">
select * from t_user;
</select>
使用@Mapkey注解进行标识,在mapper接口的方法上添加@Mapkey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中
/*
* 查询所有用户信息为map集合,一个表中会有多条数据,一个map集合对应一条数据,因此还需将所有map集合放在list集合中
* */
// List<Map<String,Object>> getAllUserInMap();
@MapKey("id")
Map<String,Object> getAllUserInMap();