首页 > 数据库 >MyBatis:查询的数量与直接在 MySQL 查询的数量不一致

MyBatis:查询的数量与直接在 MySQL 查询的数量不一致

时间:2022-12-18 23:34:51浏览次数:36  
标签:name stu 查询 sc course MySQL MyBatis id

这是我在 MySQL 中直接查询的结果:

image

一共有 4 条数据。

这是 MyBatis 查询出来的结果:

image

查询出来只有 2 条数据,这和我在 MySQL 中直接查询的数量严重不一致。在网上也查询了好多资料,他们的情况与我的情况都不一样。经过我自己的查询和试错,发现是因为我的 resultMap 开启了 autoMapping,且我多余地添加了子标签 result,所以导致最终查询的数量不一致。

下面是错误的 resultMap 映射操作:

<resultMap id="mapOfQueryMyCourses" type="UniCourse" autoMapping="true">
  <result column="term" property="term"/>
  <association property="course" javaType="Course" columnPrefix="c_" autoMapping="true"/>
  <association property="teacher" javaType="Teacher" columnPrefix="t_" autoMapping="true"/>
</resultMap>
<select id="queryMyCourses" resultMap="mapOfQueryMyCourses" parameterType="Student">
  SELECT sc.term,
         sc.stu_id,
         c.name     c_name,
         c.property c_property,
         c.credit   c_credit,
         t.name     t_name
  FROM `stu_course` AS sc
         JOIN `courses` AS c ON sc.course_id = c.cno
         JOIN `teachers` AS t ON sc.teacher_id = t.tno
  WHERE sc.stu_id = #{sno}
</select>

正如上面说到的,如果开启了 autoMapping,且你的配置文件又开启了自动映射驼峰命名,就不要多余地添加子标签 result:

下面是正确地 resultMap 映射操作:

<resultMap id="mapOfQueryMyCourses" type="UniCourse" autoMapping="true">
  <association property="course" javaType="Course" columnPrefix="c_" autoMapping="true"/>
  <association property="teacher" javaType="Teacher" columnPrefix="t_" autoMapping="true"/>
</resultMap>
<select id="queryMyCourses" resultMap="mapOfQueryMyCourses" parameterType="Student">
  SELECT sc.term,
         sc.stu_id,
         c.name     c_name,
         c.property c_property,
         c.credit   c_credit,
         t.name     t_name
  FROM `stu_course` AS sc
         JOIN `courses` AS c ON sc.course_id = c.cno
         JOIN `teachers` AS t ON sc.teacher_id = t.tno
  WHERE sc.stu_id = #{sno}
</select>

即,删除掉多余的 result 子标签,association 也不需要写。如下图所示,这下查询出来的数量就保持一致了:

image

标签:name,stu,查询,sc,course,MySQL,MyBatis,id
From: https://www.cnblogs.com/Enziandom/p/16991262.html

相关文章

  • RobotFramework Mysql库添加及使用
    一、安装MySQL库方法1、DatabaseLibrary(python) 库包下载地址:​​ http://franz-see.github.io/Robotframework-Database-Library/​​方法2:免下载直接安......
  • 二进制安装mysql
    下载地址https://downloads.mysql.com/archives/community/将下载好的二进制安装包放到服务器上$ll-h总用量636M-rw-r--r--1rootroot636M5月113:11mysq......
  • yum在线安装mysql
    下载https://dev.mysql.com/downloads/repo/yum/上传服务器$rz-Erzwaitingtoreceive.$ll总用量12-rw-r--r--1rootroot112885月114:17mysql80-co......
  • MySQL发行版的选择
    MySQL官方发行版MySQL是最流行的数据库,主要特点:简单:MySQL使用很简单,任何稍微有IT背景的技术人员都可以无师自通地参照文档安装运行和使用MySQL,这几乎没有什么门槛。开......
  • 修改mysql密码规则
    建议个人测试学习使用,切勿在生产环境中使用--查看规则mysql>showvariableslike'validate_password%';+--------------------------------------+--------+|Variab......
  • cppconn cpp create table in cpp file ,show current date time in mysql cli via s
    //Model/mysqlhelper.h#ifndef__mysqlhelper_h__#define__mysqlhelper_h__#include<chrono>#include<ctime>#include<fstream>#include<iomanip>#include<i......
  • Mac 使用 brew 安装 mysql
    最近需要用到MySQL来开发项目,所以在Mac配置了下MySQL的环境。1、使用brewinstallmysql安装MySQL安装完毕后会有以下提示信息,告诉我们初始安装好后root账户......
  • centos7 编译安装mysql
    mysql5.7版本和8版本的编译略有不同,所以这里分开讲。源码编译、安装MySQL5.7Mysql5.7版本更新后有很多变化,最主要的变化是安装MySQL必须要有BOOST库,不过MySQL的官网源码......
  • MySQL HA(High Availability) 数据库高可用工具Orchestrator 基本原理
    目录1.实例探测(instancesdiscover/poll)2.故障分析(failureanalysis)3.故障恢复(failurerecovery)4.总结Orchestrator是一款开源的MySQL数据库高可用HA工具。它稳定可靠,......
  • 4.DQL查询数据(涉及联表查询)
    4.DQL查询数据(最重点!!!)1.DQL的特点(dataquerylanguage:数据库查询语言)所有的查询操作都用它select简单的查询,复杂的查询它都能做数据库中最核心的语言,最重要的语句☆......