在使用mybatis中指定字段查询
1:需求:查询学过“叶平”老师所教的所有课的同学的学号、姓名;
List<Map<String,Object>> selectYepingAllCourse(@Param("name") String name);
用
List<Map<String,Object>>来接收从数据库查询的数据
<!--学叶平老师教的所有课的学生的学号,姓名-->
<select id="selectYepingAllCourse" resultMap="Base_ResultMap">
SELECT
a.s_id,
a.sname
FROM
a_student a
WHERE
a.s_id IN (
SELECT
a.s_id
FROM
a_sc a
INNER JOIN a_course b ON a.c_id = b.c_id
INNER JOIN a_teacher c ON c.t_id = b.t_id
WHERE
c.tname = #{name}
GROUP BY
a.s_id
HAVING
count(a.c_id) = (
SELECT
count(a_course.c_id)
FROM
a_course
INNER JOIN a_teacher ON a_teacher.t_id = a_course.t_id
WHERE
a_teacher.tname = #{name}
)
);
</select>
分析一下这个sql。
:都有哪些学生学习了叶平老师的课。
SELECT
a.s_id,count(a.c_id)
FROM
a_sc a
INNER JOIN a_course b ON a.c_id = b.c_id
INNER JOIN a_teacher c ON c.t_id = b.t_id
WHERE
c.tname = '叶平'
GROUP BY
a.s_id
:叶平老师教了几门课。
SELECT
count(a_course.c_id)
FROM
a_course
INNER JOIN a_teacher ON a_teacher.t_id = a_course.t_id
WHERE
a_teacher.tname = '叶平'
)
:学叶平老师课和叶平老师教的课一样的学生的信息。
SELECT
a.s_id
FROM
a_sc a
INNER JOIN a_course b ON a.c_id = b.c_id
INNER JOIN a_teacher c ON c.t_id = b.t_id
WHERE
c.tname = '叶平'
GROUP BY
a.s_id
HAVING
count(a.c_id) = (
SELECT
count(a_course.c_id)
FROM
a_course
INNER JOIN a_teacher ON a_teacher.t_id = a_course.t_id
WHERE
a_teacher.tname = '叶平'
)
测试:
/**
* 查询学过“叶平”老师所教的所有课的同学的学号、姓名;
*/
@Test
public void testSelectYepingAllCourse(){
List<Map<String, Object>> list = ascMapper.selectYepingAllCourse("李一");
for (Map<String,Object> i:list){
System.out.println(i);
}
}
输出的结果:
得到List集合中Map集合的值。
for(int i=0;i<list.size();i++){
Map map=list.get(i);
//是用set来接收的。不能重复。无顺序
Set set = map.keySet();
System.out.println("set的值 "+set);
Object sId = map.get("sId");
System.out.println("得到sId的值 "+sId);
}
输出结果:这个只有一条结果。
下面看下多个结果的。
在使用mybatis中指定字段查询的更多相关文章
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段
mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段 先看一下 怎么实现动态的自定义字段查询: 例如: 而field 就是数据表中的某一个字段 String f ...
- sql 筛选表中指定字段包含26某个小写字母
SELECT *from 表名WHERE 字段 COLLATE Chinese_PRC_CS_AS LIKE '%[abcdefghijklmnopqrstuvwxyz]%'筛选表中指定字段包含26某 ...
- mybatis中的高级查询
Mybatis作为一个ORM框架,肯定是支持sql高级查询的. 下面的一个案例来为大家详细讲解mybatis中的高级查询. 案例说明: 此案例的业务关系是用户,订单,订单详情与商品之间的关系. 以订单 ...
- MySQL select 语句指定字段查询
指定字段查询 SELECT 语法 SELECT [ALL | DISTINCT] {* | table.* | [table.field1[as alias1][,table.field2[as al ...
- mybatis中xml字段空判断及模糊查询
由于业务特殊的查询需求,需要下面的这种查询,一直感觉模糊不清,本地测试一下顺便做个总结 贴一段xml代码,如下: <if test="receivedName != null and ...
- mybatis中sql语句查询操作
动态sql where if where可以自动处理第一个and. <!-- 根据id查询用户信息 --> <!-- public User findUserById(int id) ...
- Mybatis中的in查询和foreach标签
Mybatis中的foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index,collection,open,separato ...
- MySQL中 指定字段排序函数field()的用法
MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序. 函数使用格式如下: order by (str,str1,str2,str3,str4……),str与str1,str ...
随机推荐
- WeekMap WeakSet的用途
1. WeekMap WeakSet有一个特性,就是加入其中的元素不会算入引用计数,所以当其他地方没有对对象的引用之后,就可以删除了,不会造成内存泄漏. WeekMap的一个用途是保存Dom节点引用, ...
- Vue实战:音乐播放器(一) 页面效果
先看一下效果图 首页 歌单详情页 歌手列表 歌手详情页 排行页面 榜单的详情页(排序样式) 搜索页面 搜索结果 播放器内核 歌词自动滚动 播放列表 用户中心
- KETTLE——(二)数据抽取
过了个春节,好长时间没有更新了,今天接着写第二部分——数据抽取. 进入界面以后会发现左侧菜单有两个东西:转换和作业:简单说一下,转换是单次的转换,不可重复,但可重复利用:作业是汇聚了其他操作和多次(可 ...
- K近邻实战手写数字识别
1.导包 import numpy as np import operator from os import listdir from sklearn.neighbors import KNeighb ...
- SSM001/构建maven多模块项目
一.Idea构建maven多模块项目 1.创建maven项目--创建父模块 [1].File->New->Module... [2].点击next,填写:GroupId,ArtifactI ...
- pandas 入门(3)
from pandas import Series, DataFrame, Index import numpy as np # 层次化索引 对数据重塑和分组操作很有用 data = Series(n ...
- javascript 阻止事件冒泡
阻止冒泡 冒泡简单的举例来说,儿子知道了一个秘密消息,它告诉了爸爸,爸爸知道了又告诉了爷爷,一级级传递从而引起事件的混乱,而阻止冒泡就是不让儿子告诉爸爸,爸爸自然不会告诉爷爷了. 举个栗子: 父容器是 ...
- 通过document.domain实现跨域访问
通过document.domain实现跨域访问:https://blog.csdn.net/nlznlz/article/details/79506655 前端跨域方法之document.domain ...
- ARM汇编2
一. 数据处理汇编指令 1.1. 数据传输指令 1.1.1. mov(Move) 指令 示例:mov r0, r0, LSL#3 ; r0 = r0* 8 mov pc, r ...
- Django设置允许跨域请求
方式一: 在中间件中 def process_response(self, request, response): response['Access-Control-Allow-Origin'] = ...