6、Mybatis之高级查询
6.1、创建接口、映射文件和测试类

++++++++++++++++++++++++++分割线++++++++++++++++++++++++++

注意namespace属性值为对应接口的全限定类名
<?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="org.rain.mybatis.mapper.SelectMapper">
</mapper>
++++++++++++++++++++++++++分割线++++++++++++++++++++++++++

6.2、查询一个实体类对象
6.2.1、接口方法

User getUserById(@Param("id") Integer id);
6.2.2、映射文件

<!--User getUserById(@Param("id") Integer id);-->
<select id="getUserById" resultType="User">
select * from t_user where id = #{id}
</select>
6.2.3、测试方法

@Test
public void testGetUserById(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
User user = selectMapper.getUserById(1);
System.out.println(user);
sqlSession.close();
}
6.2.4、执行效果

6.3、查询一个list集合
6.3.1、接口方法

List<User> getAllUser();
6.3.2、映射文件

<!--List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
6.3.3、测试方法

@Test
public void testGetAllUser(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
List<User> users = selectMapper.getAllUser();
for (User user : users) {
System.out.println(user);
}
}
6.3.4、执行效果

6.4、查询单个数据
6.4.1、接口方法

Integer getCount();
6.4.2、映射文件

注意:resultType属性的值除了可以是java.lang.Integer之外,还可以是Integer、integer、int或INT等;
这是因为mybatis对Java中常用的类型都设置了类型别名。
<!--Integer getCount();-->
<select id="getCount" resultType="java.lang.Integer">
select count(*) from t_user
</select>
6.4.3、测试方法

@Test
public void testGetCount(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
Integer count = selectMapper.getCount();
System.out.println(count);
sqlSession.close();
}
6.4.4、执行效果

6.5、查询一条数据为map集合
6.5.1、接口方法

Map<String,Object> getUserByIdToMap(@Param("id") Integer id);
6.5.2、映射文件

<!--Map<String,Object> getUserByIdToMap(@Param("id") Integer id);-->
<select id="getUserByIdToMap" resultType="map">
select * from t_user where id = #{id}
</select>
6.5.3、测试方法

@Test
public void testGetUserByIdToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
Map<String, Object> userByIdToMap = selectMapper.getUserByIdToMap(1);
System.out.println(userByIdToMap);
sqlSession.close();
}
6.5.4、执行效果

注意:当某个字段值为null时,该字段不会放进map集合中
6.6、查询多条数据为map集合
6.6.1、接口方法

List<Map<String,Object>> getAllUserToMap();
6.6.2、映射文件

<!--List<Map<String,Object>> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="map">
select * from t_user
</select>
6.6.3、测试方法

@Test
public void testGetAllUserToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
List<Map<String, Object>> allUserToMap = selectMapper.getAllUserToMap();
for (Map<String, Object> map : allUserToMap) {
System.out.println(map);
}
sqlSession.close();
}
6.6.4、执行效果

6.6.5、嵌套map方式存储
6.6.5.1、接口方法

可以通过@MapKey注解设置大map集合的键为数据中的某个字段值(该字段值不能存在重复),值是每条数据所对应的小map集合
@MapKey("ID")
Map<String,Object> getAllUserToMap();
6.6.5.2、测试方法

@Test
public void testGetAllUserToMap(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
Map<String, Object> allUserToMap = selectMapper.getAllUserToMap();
System.out.println(allUserToMap);
sqlSession.close();
}
6.6.5.3、执行效果

6、Mybatis之高级查询的更多相关文章
- MyBatis高级查询
-------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查 ...
- mybatis中的高级查询
Mybatis作为一个ORM框架,肯定是支持sql高级查询的. 下面的一个案例来为大家详细讲解mybatis中的高级查询. 案例说明: 此案例的业务关系是用户,订单,订单详情与商品之间的关系. 以订单 ...
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.2高级结果映射之一对多映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.3.1 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.1高级结果映射之一对一映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.2.4 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- 持久层之 MyBatis: 第三篇 :缓存 And 高级查询
MyBatis入门到精通3 缓存机制 Mybatis一级缓存测试 Mybatis二级缓存测试 高级查询 表关系说明 一对一查询 一对多查询 多对多查询 缓存机制 正如大多数持久层框架一样,MyBati ...
- MyBatis 高级查询之多对多查询(十一)
高级查询之多对多查询 查询条件:根据玩家名,查询游戏信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据玩家名查询游戏 * @param name ...
- MyBatis 高级查询之一对多查询(十)
高级查询之一对多查询 查询条件:根据游戏名称,查询游戏账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据游戏名查询游戏账号 * @param ...
- MyBatis 高级查询之一对一查询(九)
高级查询之一对一查询 查询条件:根据游戏角色ID,查询账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据角色ID查询账号信息 * @para ...
- MyBatis 高级查询环境准备(八)
MyBatis 高级查询 之前在学习 Mapper XML 映射文件时,说到 resultMap 标记是 MyBatis 中最重要最强大也是最复杂的标记,而且还提到后面会详细介绍它的高级用法. 听到高 ...
- MyBatis(7)高级查询
本次全部学习内容:MyBatisLearning 高级查询: 对于整体的工程是时候增加一点文件了: 具体用到那个类再去说明类的内容 一对一查询: 1.resultType进行实现: 执行的sq ...
随机推荐
- calendar.monthrange
import calendar calendar.monthrange(2019,5) 输出结果:(2, 31) 解析: 这里使用了函数 calendar.monthrange(year,month) ...
- AcWing900.整数划分(python)
题目详情 知识点 计数类DP 分析题目,k个数是默认排好序的,也就是说,对于划分我们的考虑是无序的:例如 4 = 1+1+2 4 = 1+2+1 4 = 2+1+1 以上三种方式是没有区别的,所以在求 ...
- openlayers获取绘制多边形的顶点坐标
虽使用Interaction无数次,进行图形绘制与用户交互等,但当需要获取绘制图形的顶点坐标时还是不晓得咋弄? 都知道在绘制完成后回调中能获取到当前的event对象draw.on('drawend', ...
- cookie和session以及token
cookie和seesion以及token 技术都基于状态保持, cookie: 有服务器生成, 以 k:v 形式保持在浏览器端,下次请求服务器,附带cookie信息:存在恶意修改可能:可以对co ...
- Galaxy Release 20.05 发布,新增多项可视化体验
Galaxy Project(https://galaxyproject.org/)是在云计算背景下诞生的一个生物信息学可视化分析开源项目. 该项目由美国国家科学基金会(NSF).美国国家人类基因组研 ...
- Ubuntu 16.04关闭系统自动更新
# 背景在使用阿里云ECS服务器时,服务器CPU与内存突然增大,经过排查发现是系统自动更新导致,幸运的是不是发生在业务高峰期,为了避免出现类似的情况,决定禁用系统自动更新,可以通过手动或者定时任务的方 ...
- 3. HelloWorld的实现
恐惧是本能,行动是信仰(在此感谢尚硅谷宋红康老师的教程) 1. 新建 Project - Class 选择"New Project": 指名工程名.使用的 JDK 版本等信息.如下 ...
- Python常用基础知识整理
一.Python转义字符 \a :响铃(BEL) \b : 退格(BS) ,将当前位置移到前一列 \f :换页(FF),将当前位置移到下页开头 \n :换行(LF) ,将当前位置移到下一行开头 \r ...
- PostgreSQL 性能优化: EXPLAIN 使用教程
使用 EXPLAIN EXPLAIN基础 代价估计 启动开销 总开销 计划结点输出行数 计划结点输出行宽 执行统计 实际启动开销 实际总开销 实际输出行数 实际执行次数 I/O统计 共享块命中数 共享 ...
- JS逆向实战20——某头条jsvm逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 目标网站:aHR0c ...