mybatis复杂对象查询

1、一对多查询

<resultMap type="com.cdxt.ds.web.lesson.pojo.CourseInfo" id="courseDetailInfo" >
<id column="courseID" property="courseID"/>
<result column="price" property="price"/>
<result column="name" property="name"/>
<result column="totalclass" property="totalClass"/>
<result column="type" property="type"/>
<result column="brief" property="brief"/>
<collection property="coursePlan" ofType="com.cdxt.ds.web.lesson.pojo.CoursePlan">
<id column="courseID" property="id"/>
<result column="classnumber" property="classNumber"/>
<result column="time" property="time"/>
</collection>
</resultMap>

<!-- 查询课程信息单一记录 -->
<select id="getCourseInfobyCpurseID" parameterType="int" resultMap="courseDetailInfo">

select a.courseID,a.price,a.name,a.totalclass,a.type,a.brief,b.id,
b.classnumber,b.time from XTEL_COURSEINFO a left join XTEL_CourseArrangement b
on a.courseID=b.courseID where a.COURSEID=#{cpurseID}
</select>

问题:测试的时候发现只能从表只能查询到一条记录。

原因:两张表主键一样,出现的数据覆盖

解决方法:

1、修改数据库id,不推荐

2、查询结果起别名

 <resultMap type="com.cdxt.ds.web.lesson.pojo.CourseInfo"  id="courseDetailInfo" >
 <id column="courseID" property="courseID"/>
 <result column="price" property="price"/>
 <result column="name" property="name"/>
 <result column="totalclass" property="totalClass"/>
 <result column="type" property="type"/>
 <result column="brief" property="brief"/>
 <collection property="coursePlan" ofType="com.cdxt.ds.web.lesson.pojo.CoursePlan">
            <id column="courseID" property="id"/>
            <result column="classnumber" property="classNumber"/>
            <result column="time" property="time"/>
  </collection>
 </resultMap>

<!-- 查询课程信息单一记录 -->
<select id="getCourseInfobyCpurseID" parameterType="int" resultMap="courseDetailInfo">

select a.courseID,a.price,a.name,a.totalclass,a.type,a.brief,b.courseID id,
 b.classnumber,b.time from  XTEL_COURSEINFO a left join XTEL_CourseArrangement b
 on a.courseID=b.courseID where a.COURSEID=#{cpurseID}
</select>

原文地址:https://www.cnblogs.com/magic101/p/9507689.html

时间: 2024-10-31 14:57:00

mybatis复杂对象查询的相关文章

7. MyBatis一对多查询

一: 准备工作 1. 建立数据 CREATE TABLE boss( b_id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, b_name VARCHAR(255) ); CREATE TABLE manager( m_id INT(11) PRIMARY KEY AUTO_INCREMENT NOT NULL, m_name VARCHAR(255) ); INSERT INTO boss(b_name) VALUES('Tom'); INSERT 

Mybatis关联表查询_5

使用Mybatis实现关联查询,分为一对一和一对多两种情况,最后并对ResultMap进行一个简要说明. 创建表和数据 创建教师表,班级表,学生表, 假设一个老师只负责教一个班,那么老师和班级之间的关系是一对一的关系. 假设一个班级有多个学生,那么班级和学生之间的关系是一对多的关系. CREATE TABLE teacher( t_id number(5) PRIMARY KEY, t_name VARCHAR2(20) ); CREATE TABLE class( c_id number(5)

mybatis的嵌套查询(嵌套查询nested select和嵌套结果nested results查询)区别

(转自:http://blog.csdn.net/canot/article/details/51485955) Mybatis表现关联关系比hibernate简单,没有分那么细致one-to-many.many-to-one.one-to-one.而是只有两种association(一).collection(多),表现很简洁.下面通过一个实例,来展示一下Mybatis对于常见的一对多和多对一关系复杂映射是怎样处理的. 以最简单的用户表订单表这个最简单的一对多做示例: 对应的JavaBean:

Mybatis使用之查询详解

Mybatis使用之查询详解 一:简介 此篇主要知识点: 1.sql语句块 2.select标签属性 3.ResultMap 标签配置 4.一对一关联 5.一对多关联 6.多对多关联 7.嵌套查询 二:SQL语句块 2.1 作用 SQL元素可以被用来定义可重用的SQL 代码段,可以包含在其他语句中.比如在项目中常常做的分页查询.分别需要两条SQL语句.一条是查询所有具体记录信息.另一条需要查询记录数.而两条语句的where条件是一样的.这种类似情况就可以使用SQL语句块来简化配置信息. 2.2

mybatis 联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN

MyBatis的对象关系映射---一对多N+1策略★★★★★

在实际开发中,一个业务可能涉及到多个数据表的查询,那么多表查询就涉及连接查询(等值连接), 等值连接 表与表之间有一个外键关键,但是程序中最终获取的表封装的对象, 对象与对象之间是没有外键关系的,对象和对象之间只有依赖关系: 对象之间关系主要是四种: 一对一 关系一个人对应身份证id,一个QQ号对应一个QQ空间 一对多 关系 一个部门对应多个员工 多对一 关系 多个员工对应一个部门 多对多 关系 多个学生对应多个老师,多个学生对应多个课程 什么关系应该从哪个对象作为中心点来看 一对多, 以one

mybatis的嵌套查询与嵌套结果查询的不同

原文:https://blog.csdn.net/qq_39706071/article/details/85156840 实体类: 嵌套查询mapper方法:嵌套查询的弊端:即嵌套查询的N+1问题尽管嵌套查询大量的简化了存在关联关系的查询,但它的弊端也比较明显:即所谓的N+1问题.关联的嵌套查询显示得到一个结果集,然后根据这个结果集的每一条记录进行关联查询.现在假设嵌套查询就一个(即resultMap 内部就一个association标签),现查询的结果集返回条数为N,那么关联查询语句将会被执

mybatis group by查询返回map类型

故事的发生是这样的. . . . . . . 一天 我发现我们的页面显示了这样的汇总统计数据,看起来体验还不错哦-- 然后,我发现代码是这样滴:分开每个状态分别去查询数量. 额e,可是为嘛不使用简单便捷的 group by 语句呢 我们知道MyBatis提供了selectMap的方法,查询结果为hashmap.查询的时候,可以配置相应的传入参数和查询返回结果. 对应dao 层代码如下: //查询各状态对应的数量,三个参数分别对应,select的id,查询参数,返回hashmap的key publ

XML编程总结(七)——使用XPath对象查询xml文档

(七)使用XPath对象查询xml文档 XPath,一种为查询 XML 文档而设计的查询语言.XPath 并不是 Java 语言,事实上 XPath 不是一种完整的编程语言.有很多东西用 XPath 表达不出来,甚至有些查询也无法表达.幸运的是,可以把 XPath 结合到 Java 程序中,这样就能发挥两者的优势了:Java 做 Java 所擅长的,XPath 做 XPath 所擅长的.Java 程序执行 XPath 查询所需要的应用程序编程接口(API)还因形形色色的 XPath 引擎而各不相