尚硅谷MyBatis8_各种查询功能

查询一个实体类对象

查询出的数据只有一条,可以通过「实体类对象」or「集合」or「map」接收

/**
* 根据用户id查询用户信息
* @param id
* @return
*/
User getUserById(@Param("id") int id);
<!--User getUserById(@Param("id") int id);-->
<select id="getUserById" resultType="User">
    select * from t_user where id = #{id}
</select>

查询多条结果

查询出的数据不止一条,可以通过「集合」or「map」接收,一定不能通过一个实体类对象接收

/**
* 查询所有用户信息
* @return
*/
List<User> getUserList();
<!--List<User> getUserList();-->
<select id="getUserList" resultType="User">
    select * from t_user
</select>

返回值是基本数据类型

也是需要指定接收的类型,但是 resultType 里面写啥不重要,因为 Mybatis 底层已经定义好了默认的类型别名,咱们写在 resultType 里的都是别名,无所谓的。

Integer getCount();
<select id="getCount" resultType="java.lang.Integer">
    select count(*) from t_user
</select>

查询结果返回 map 集合

查询一条信息

Map<String,Object> getUserByIdToMap(@Param("id") Integer id);
<!--Map<String,Object> getUserByIdToMap(@Param("id") Integer id);-->
<select id="getUserByIdToMap" resultType="map">
    select *
    from t_user
    where id = #{id}
</select>

查询多条信息

  • 方式一:list存储多条map
List<Map<String, Object>> getAllUserToMap();
<select id="getAllUserToMap" resultType="map">
    select *
    from t_user;
</select>
  • 方式二

指定@MapKey("id"),这样就会以指定的字段作为key,value则是每一条记录的map集合

@MapKey("id") //采取唯一的字段作为key,值是每条数据对应的map,也就是String-Map
Map<String, Object> getAllUserToMap();
{
	2={password=123456, sex=男, id=2, age=23, email=12345@qq.com, username=张三}, 
	3={password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin}, 
	5={password=123456, sex=男, id=5, age=16, email=1234@qq.com, username=hello}
}
posted @ 2023-03-20 19:53  ShaunY  阅读(13)  评论(0编辑  收藏  举报