Mybatis中的各种查询功能

向右看齐 2024-04-08 12:32 196阅读 0赞
Mybatis中的各种查询功能

这里以实现SelectMapper接口中的方法为例,根据id查询用户信息;查询所有的用户信息;查询用户表中的总记录数;根据id查询一个用户信息为map集合;查询所有的用户信息为一个map集合
以上功能以代码和注释来展现:

  1. package com.qcw.mybatis.mapper;
  2. import com.qcw.mybatis.pojo.User;
  3. import org.apache.ibatis.annotations.MapKey;
  4. import org.apache.ibatis.annotations.Param;
  5. import java.util.List;
  6. import java.util.Map;
  7. public interface SelectMapper {
  8. /**
  9. *-若sql语句查询结果为多条时,一定不能以实体类类型作为方法的返回值
  10. * 否则会抛出异常TooManyResultsException
  11. *若sql语句查询的结果为一条时,此时可以使用实体类类型或list集合类型作为方法返回值
  12. */
  13. //根据id查询用户信息
  14. User getUserById(@Param("id") Integer id);
  15. //查询所有的用户信息
  16. List<User> getAllUser();
  17. //查询用户表中用户的总记录数
  18. Integer getCount();
  19. //根据id查询一个用户信息为map集合
  20. Map<String,Object> getUserByIdToMap(@Param("id") Integer id);
  21. //查询所有的用户信息为一个map集合
  22. //List<Map<String,Object>> getAllUserToMap();
  23. //注解的作为作为一个更大的map集合存放查询出的每条信息的小的集合,以id作为键以每个map集合作为值
  24. @MapKey("id")
  25. Map<String,Object> getAllUserToMap();
  26. }
  27. <?xml version="1.0" encoding="UTF-8" ?>
  28. <!DOCTYPE mapper
  29. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  30. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  31. <mapper namespace="com.qcw.mybatis.mapper.SelectMapper">
  32. <!-- User getUserById(@Param("id") Integer id);-->
  33. <select id="getUserById" resultType="User">
  34. select * from t_user where id = #{
  35. id}
  36. </select>
  37. <!-- List<User> getAllUser();-->
  38. <select id="getAllUser" resultType="User">
  39. select * from t_user
  40. </select>
  41. <!-- Integer getCount();-->
  42. <!-- MyBatis中为Java中的常用类型设置了别名:
  43. Integer:Integer, int int:_int,_integer Map:map String:string-->
  44. <select id="getCount" resultType="int">
  45. select count(*) from t_user
  46. </select>
  47. <!-- Map<String,Object> getUserByIdToMap(@Param("id") Integer id);-->
  48. <select id="getUserByIdToMap" resultType="Map">
  49. select * from t_user where id = #{
  50. id}
  51. </select>
  52. <!-- Map<String,Object> getAllUserToMap();-->
  53. <select id="getAllUserToMap" resultType="Map">
  54. select * from t_user
  55. </select>
  56. </mapper>
  57. package com.qcw.mybatis.test;
  58. import com.qcw.mybatis.mapper.SelectMapper;
  59. import com.qcw.mybatis.pojo.User;
  60. import com.qcw.mybatis.utils.SqlSessionUtil;
  61. import org.apache.ibatis.session.SqlSession;
  62. import org.junit.Test;
  63. import java.util.List;
  64. import java.util.Map;
  65. import java.util.function.BiConsumer;
  66. public class SelectMapperTest {
  67. @Test
  68. public void getUserByIdTest(){
  69. //根据id查询用户信息
  70. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  71. SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
  72. User user = mapper.getUserById(1);
  73. System.out.println("user = " + user);
  74. }
  75. @Test
  76. public void getAllUserTest(){
  77. //查询所有的用户信息 List<User> getAllUser();
  78. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  79. SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
  80. List<User> list = mapper.getAllUser();
  81. list.forEach(System.out::println);
  82. }
  83. @Test
  84. public void getCountTest(){
  85. //查询用户表中用户的总记录数 Integer getCount();
  86. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  87. SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
  88. Integer count = mapper.getCount();
  89. System.out.println("count = " + count);
  90. }
  91. @Test
  92. public void getUserByIdToMapTest(){
  93. //根据id查询一个用户信息为map集合
  94. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  95. SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
  96. Map<String, Object> map = mapper.getUserByIdToMap(6);
  97. //map = {password=12357, gender=女, id=6, age=26, email=377@qq.com, username=root}
  98. System.out.println("map = " + map);
  99. }
  100. @Test
  101. public void getAllUserToMapTest(){
  102. //查询所有的用户信息为一个map集合
  103. SqlSession sqlSession = SqlSessionUtil.getSqlSession();
  104. SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
  105. /**
  106. * 查询的所有信息为一个map集合
  107. * 若查询的数据有多条时,并且要将每条数据转换为map集合,此时有两种解决方案
  108. * 1.将mapper接口方法的返回值设置为泛型是map的list集合:
  109. * List<Map<String,Object>> getAllUserToMap();
  110. * 2.可以将每条数据转换的map集合放在一个更大的map中,但是必须要通过@MapKey注解
  111. * 将查询得某个字段的值作为大map集合的键:
  112. * @MapKey("id")
  113. * Map<String, Object> getAllUserToMap();
  114. */
  115. Map<String, Object> map = mapper.getAllUserToMap();
  116. System.out.println("map = " + map);
  117. }
  118. }

注:以上代码为本人学习记录,仅供参考

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读