五、MyBatis各种查询功能

MyBatis的各种查询功能

  • 如果查询出的数据只有一条,可以通过
  1. 实体类对象接收
  2. List集合接收
  3. Map集合接收
  • 如果查询出的数据有多条,一定不能用实体对象接收,会抛TooManyResultsException,可以通过
  1. 实体类类型的List集合接收
  2. Map类型的List集合接收
  3. 在mapper接口的方法上添加@MapKey注解

1.查询一个实体类对象----根据id查询用户信息

①在UserMapper接口里面定义方法

 ②在UserMapper.xml配置

2.查询一个List集合--所有用户信息

 ①UserMapper接口

②在UserMapper配置类里面

3.查询单个数据—查询用户数量

  • 在MyBatis中,java常用类型都设置了类型别名
  • java.lang.Integeràint或integer
  • int->_int(基本数据类型就是_类型)
  • Map->map
  • String->string

①在UserMaper接口写上方法名

 ②在UserMapper.xml,resultType查询出结果的类型

4.查询一条数据为map集合

①在UserMapper接口里,Map<String,Object>,String代表属性名,Object代表属性值

/**
 * 根据id查询出用户信息,返回map
 */
Map<String,Object> getUserById(@Param("id") Integer id);

 ②在UserMapper.xml配置类

 ③测试

public class test {
   @Test
   public void t1() {
      SqlSession sqlSession = SqlSessionUtils.getSqlSession();
      ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
      Map<String, Object> userById = mapper.getUserById(45);
      for (String key:userById.keySet()) {
         Object values =  userById.get(key);
         System.out.println(key+"=="+values);
      }
   }
}

结果是 属性名==属性值 组合成的map集合

4.查询多条数据为map集合

  • 查询所有用户信息为map集合
  • 将表中的数据以map集合查询,一条数据对应一个map
  • 多条数据,多个map集合,存放在一个list集合中获取

方式一

①在UserMapper接口,List<Map<String,Object>>,把多个map放在list集合中。每一个list集合是map

/**
 * 根据id查询出用户信息,返回map
 * @return
 */
List<Map<String,Object>> getAllUser();

 ②在UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.atguigu.mybatis.mapper.ParameterMapper">
    <select id="getAllUser" resultType="java.util.Map">
        select * from t_user
    </select>
</mapper>

③测试

public class test {
   @Test
   public void t1() {
      SqlSession sqlSession = SqlSessionUtils.getSqlSession();
      ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
      List<Map<String, Object>> allUser = mapper.getAllUser();

      for (Map<String, Object> map:allUser
           ) {
         System.out.println("每个map信息如下========");
         for (String key:map.keySet()) {
            Object value = map.get(key);
            System.out.println(key+"=="+value);
         }
      }
   }
}

方式二 通过添加@MapKey(”id”)注解,此时键是id,值是每条数据转换为map集合

 ①在UserMapper接口里

/**
 * 根据id查询出用户信息,返回map
 */
@MapKey("id")
Map<Integer,Object> getAllUser();

②在UserMapper.xml里

<select id="getAllUser" resultType="java.util.Map">
    select * from t_user
</select>

③测试

public void t1() {
   SqlSession sqlSession = SqlSessionUtils.getSqlSession();
   ParameterMapper mapper = sqlSession.getMapper(ParameterMapper.class);
   Map<Integer, Object> allUser = mapper.getAllUser();
   for (Integer id : allUser.keySet()) {
      Object user = allUser.get(id);
      System.out.println(id+"=="+user);
   }
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以通过开启 MyBatis 的日志功能来查看查询情况。在 MyBatis 的配置文件中,可以配置日志实现类和日志级别。 首先,找到 MyBatis 的配置文件(通常是 `mybatis-config.xml`),在其中添加以下配置: ```xml <configuration> <!-- 其他配置项 --> <settings> <!-- 其他设置项 --> <!-- 开启 MyBatis 日志 --> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <!-- 其他配置项 --> </configuration> ``` 在上述配置中,`logImpl` 设置为 `STDOUT_LOGGING` 表示将日志输出到控制台。你也可以选择其他的日志实现类,如 `LOG4J` 或 `SLF4J`,根据你的项目需求进行配置。 保存并重新启动项目后,你将在控制台上看到 MyBatis 的日志输出,包括 SQL 语句和查询结果。 另外,你还可以通过调整日志级别来控制日志的详细程度。MyBatis 提供了个日志级别:`TRACE`、`DEBUG`、`INFO`、`WARN` 和 `ERROR`。默认级别是 `DEBUG`。你可以根据需要,在配置文件中进行如下设置: ```xml <configuration> <!-- 其他配置项 --> <settings> <!-- 其他设置项 --> <!-- 设置日志级别为 DEBUG --> <setting name="logLevel" value="DEBUG" /> </settings> <!-- 其他配置项 --> </configuration> ``` 调整日志级别后,MyBatis 将输出相应级别及以上的日志信息。 这样配置后,你就可以查看 MyBatis查询情况了。记得在生产环境中关闭日志输出,以避免不必要的性能损耗。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值