游侠的博客 游侠的博客
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Ranger

一名在校研究生
首页
  • 论文笔记
  • 一些小知识点

    • pytorch、numpy、pandas函数简易解释
  • 《深度学习500问》
开发
技术
更多
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Vue

  • SpringBoot2

  • JavaWeb

  • SSM

    • Spring

    • Mybatis

      • 一、MyBatis详解
      • 二、搭建MyBatis
      • 三、MyBatis的增删改查
      • 四、核心配置文件详解
      • 五、MyBatis参数值获取
      • 六、MyBatis的各种查询方式
        • 6.1、查询一个实体类对象
        • 6.2、查询一个list集合
        • 6.3、查询单个数据
        • 6.4、查询一条数据为map集合
        • 6.5、查询多条数据为map集合
          • ①方式一
          • ②方式二
      • 七、特殊SQL语句的执行
      • 八、自定义映射resultMap
      • 九、动态SQL
      • 十、MyBatis的缓存
      • 十一、MyBatis的逆向工程
      • 十二、分页插件
    • SpringMVC

    • SSM整合
  • SpringBoot3

  • 技术
  • SSM
  • Mybatis
yangzhixuan
2023-03-31
目录

六、MyBatis的各种查询方式

# 6.1、查询一个实体类对象

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

# 6.2、查询一个list集合

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

当查询的数据为多条时,不能使用实体类作为返回值,否则会抛出异常

TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值

# 6.3、查询单个数据

/**
* 查询用户的总记录数
* @return
* 在MyBatis中,对于Java中常用的类型都设置了类型别名
* 例如: java.lang.Integer-->int|integer
* 例如: int-->_int|_integer
* 例如: Map-->map,List-->list
*/
int getCount();
1
2
3
4
5
6
7
8
9
<!--int getCount();-->
<select id="getCount" resultType="_integer">
	select count(id) from t_user
</select>
1
2
3
4

通过count查找时若使用传入字段名,则查找出来的结果是这个字段的非空值个数

Java类型的别名在MyBatis的核心配置文件中都有设置,前面有_的都是Java中缩写类型的别名,如int、double等

# 6.4、查询一条数据为map集合

这种方式可以用来查询没有实体类的数据,如表中某些列的组合、平均值、中位数等统计信息

/**
* 根据用户id查询用户信息为map集合
* @param id
* @return
*/
Map<String, Object> getUserToMap(@Param("id") int id);
1
2
3
4
5
6
<!--Map<String, Object> getUserToMap(@Param("id") int id);-->
<!--结果: {password=123456, sex=男 , id=1, age=23, username=admin}-->
<select id="getUserToMap" resultType="map">
	select * from t_user where id = #{id}
</select>
1
2
3
4
5

# 6.5、查询多条数据为map集合

# ①方式一

通过列表接收多个Map对象

/**
* 查询所有用户信息为map集合
* @return
* 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
时可以将这些map放在一个list集合中获取
*/
List<Map<String, Object>> getAllUserToMap();
1
2
3
4
5
6
7
<!--Map<String, Object> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="map">
	select * from t_user
</select>
1
2
3
4

# ②方式二

通过设定最外层接收其他Map的键,去将其他Map作为值存储,需要用到MapKey()注解,注解中的值即设置map集合的键

/**
* 查询所有用户信息为map集合
* @return
* 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并
且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的
map集合
*/
@MapKey("id")
Map<String, Object> getAllUserToMap();
1
2
3
4
5
6
7
8
9
<!--Map<String, Object> getAllUserToMap();-->
<!--
{
    1={password=123456, sex=男, id=1, age=23, username=admin},
    2={password=123456, sex=男, id=2, age=23, username=张三},
    3={password=123456, sex=男, id=3, age=23, username=张三}
}
-->
<select id="getAllUserToMap" resultType="map">
	select * from t_user
</select>
1
2
3
4
5
6
7
8
9
10
11
编辑 (opens new window)
上次更新: 2024/05/30, 07:49:34
五、MyBatis参数值获取
七、特殊SQL语句的执行

← 五、MyBatis参数值获取 七、特殊SQL语句的执行→

最近更新
01
tensor比较大小函数
05-30
02
Large Language Models can Deliver Accurate and Interpretable Time Series Anomaly Detection
05-27
03
半监督学习经典方法 Π-model、Mean Teacher
04-10
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Ranger | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式