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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!