java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MyBatis查询

MyBatis的各种查询功能结果接收类型的选择(推荐)

作者:雷神乐乐

文章介绍了MyBatis中查询结果的不同接收方式,包括单条数据和多条数据的处理方法,以及MyBatis的默认类型别名,感兴趣的朋友跟随小编一起看看吧

一、若查询出的数据只有一条

1.可以通过实体类对象接收

User getUserById(@Param("id") Integer id);
<select id="getUserById" resultType="User">
    select *
    from t_user
    where id = #{id};
</select>

2.可以通过list集合接收

List<User> getUserById(@Param("id") Integer id);

3.可以通过map集合接收

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

结果:{password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin}

二、若查询出的数据有多条

1.可以通过实体类类型的list集合接收

List<User> getAllUser();
<select id="getAllUser" resultType="User">
    select *
    from t_user;
</select>

2.可以通过map类型的list集合接收

List<Map<String, Object>> getUsersByIdToMap(@Param("id") Integer id);
<select id="getUsersByIdToMap" resultType="java.util.Map">
    select *
    from t_user
    where id = #{id};
</select>
@Test
public void testGetUsersByIdToMap() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
    List<Map<String, Object>> users = mapper.getUsersByIdToMap(6);
    users.forEach(System.out::println);
    // {password=789789, sex=男, id=6, age=25, email=456123@qq.com, username=李四}
}

3.可以在mapper接口的方法上添加@MapKey注解

@MapKey("id")
Map<String, Object> getAllUserToMap();

此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中

注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException

MyBatis中设置了默认的类型别名:

  • java.lang.Integer-->int,integer
  • int-->_int,_integer
  • Map-->map
  • String-->string

到此这篇关于MyBatis的各种查询功能,结果接收类型的选择的文章就介绍到这了,更多相关MyBatis内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文