当前位置: 首页 > news >正文

在使用mybatis中指定字段查询

1:需求:查询学过“叶平”老师所教的所有课的同学的学号、姓名;

1 List<Map<String,Object>> selectYepingAllCourse(@Param("name") String name);

List<Map<String,Object>>来接收从数据库查询的数据
 1 <!--学叶平老师教的所有课的学生的学号,姓名-->
 2 <select id="selectYepingAllCourse" resultMap="Base_ResultMap">
 3             SELECT
 4             a.s_id,
 5             a.sname
 6         FROM
 7             a_student a
 8         WHERE
 9             a.s_id IN (
10                 SELECT
11             a.s_id
12         FROM
13             a_sc a
14         INNER JOIN a_course b ON a.c_id = b.c_id
15         INNER JOIN a_teacher c ON c.t_id = b.t_id
16         WHERE
17             c.tname = #{name}
18         GROUP BY
19             a.s_id
20         HAVING
21             count(a.c_id) = (
22                 SELECT
23                     count(a_course.c_id)
24                 FROM
25                     a_course
26                 INNER JOIN a_teacher ON a_teacher.t_id = a_course.t_id
27                 WHERE
28                     a_teacher.tname = #{name}
29             )
30             );
31 </select>

分析一下这个sql。

1:都有哪些学生学习了叶平老师的课。
    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
    2:叶平老师教了几门课。
    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 = '叶平'
    )
    3:学叶平老师课和叶平老师教的课一样的学生的信息。
    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集合的值。

1 for(int i=0;i<list.size();i++){
2             Map map=list.get(i);
3             //是用set来接收的。不能重复。无顺序
4             Set set = map.keySet();
5             System.out.println("set的值 "+set);
6             Object sId = map.get("sId");
7             System.out.println("得到sId的值 "+sId);
8         }

输出结果:这个只有一条结果。

下面看下多个结果的。

 

转载于:https://www.cnblogs.com/bulrush/p/8952268.html

相关文章:

  • 上海高校金马五校赛 J - 小Y写文章
  • C#求百分比
  • 用python写一个类似于linux中的tree
  • JS去掉字符串前后空格或去掉所有空格的用法
  • C#预处理器指令
  • find中的-exec参数
  • 再次解决 尝试加载 Oracle 客户端库时引发 BadImageFormatException
  • 学习笔记——悬线法
  • 8.dockerfile之CMD指令
  • Mysql Programming CS 155P笔记(七) Dynamic SQL
  • JMS学习六(ActiveMQ消息传送模型)
  • linux常用命令:find 命令参数详解
  • MySQL Route负载均衡与读写分离Docker环境使用
  • linux 下 mysql-5.5.8 安装
  • 网络流24题~飞行员配对方案问题
  • [译] React v16.8: 含有Hooks的版本
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • CSS 三角实现
  • Fabric架构演变之路
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • js如何打印object对象
  • Linux下的乱码问题
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • rabbitmq延迟消息示例
  • Shell编程
  • storm drpc实例
  • 从伪并行的 Python 多线程说起
  • 搭建gitbook 和 访问权限认证
  • 关于extract.autodesk.io的一些说明
  • 全栈开发——Linux
  • 如何实现 font-size 的响应式
  • 我是如何设计 Upload 上传组件的
  • 正则学习笔记
  • HanLP分词命名实体提取详解
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 昨天1024程序员节,我故意写了个死循环~
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #vue3 实现前端下载excel文件模板功能
  • (09)Hive——CTE 公共表达式
  • (1)(1.13) SiK无线电高级配置(五)
  • (Git) gitignore基础使用
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (过滤器)Filter和(监听器)listener
  • (南京观海微电子)——I3C协议介绍
  • (一)RocketMQ初步认识
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ... 是什么 ?... 有什么用处?
  • .java 9 找不到符号_java找不到符号
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET 中的轻量级线程安全
  • .NET(C#) Internals: as a developer, .net framework in my eyes