Mybatis collection 使用的注意点

mybatis  的一对多

<?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="com.ly.fw.dao.OrderDAO">
	<resultMap type="com.ly.fw.entity.Order" id="order">
		<id column="id" property="id" />
        <result column="orderId" property="orderId" />
        <result column="user" property="user" />
        <result column="address" property="address" />
        <result column="tel" property="tel" />
        <result column="code" property="code" />
        <result column="orderPrice" property="orderPrice" />
        <result column="transNum" property="transNum" />
   		<result column="status" property="status" />
   		<result column="time" property="time" />
   		<collection property="productList"  column="orderId"  resultMap="opro"/>
	</resultMap>
	<resultMap type="com.ly.fw.entity.OrderProduct" id="opro">
		<id column="opid" property="opId" />
        <result column="orderId" property="orderId" />
        <result column="productId" property="productId" />
        <result column="count" property="count" />
        <result column="price" property="price" />
       	<result column="size" property="size" />
	</resultMap>

  <select id="getAll" resultMap="order">
        select o.*,p.* from `order` as o, order_product as p where o.orderId=p.orderId order by o.`time` desc limit #{start},#{end}

    </select>
</mapper>

  实体类中:

    private long id ;
    private String orderId ;//订单id
    private String user ;//用户
    private String address ;//地址
    private String tel ;//电话
    private String code ;//邮编
    private String orderPrice ;//订单金额
    private String transNum;
    private int status;//状态。
    private Date time;//订单时间

    private List<OrderProduct> productList;// 一对多

  正常情况这样是直接能返会集合中的数据的。但是今天遇到个问题是返还的集合中始终只有一条数据。数据库中返回应该不只一条.

查了半天资料发现:两张表的主键名称不能一样,我就是由于两张表的主键 都是 “id”  所以返回只有一条数据

时间: 2024-11-05 06:24:17

Mybatis collection 使用的注意点的相关文章

Mybatis Collection查询集合只出现一条数据

Mybatis Collection查询集合只出现一条数据 1.原因 如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条. 2.解决办法 级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的.但在mybatis中主从表需要为相同字段名设置别名.设置了别名就OK了. 例子: 主表Standard, 从表StandEntity,均有名为id的字段 <resultMap id="StandardAndEntityResultMap"

mybatis collection 一对多关联查询,单边分页的问题总结!

若想直接通过sql实现多级关联查询表结构得有2 个必不可少的字段:id ,parentId,levelId id:主键id, parentId:父id levelId:表示第几级(表本身关联查询的时候需要用到,不然会有重复数据) 利用mybatis collection 实现一对多关联查询 Dto:(一级) public class ProvinceInfoDTO implements Serializable { private String id; private String name;

MyBatis collection的两种形式——MyBatis学习笔记之九

与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射文件TeacherMapper.xml如下(点击此处进入嵌套resultMap形式的示例源码下载页面.注:本示例代码是在修改本系列的上篇博文示例代码的基础上完成的,用到了MapperScannerConfigurer和注解等知识.对这些知识不熟悉的读者,可参考上篇博文:http://legend20

mybatis collection

今天在CSDN上看到一个同学在问一个mybatis的问题,所以就模拟了一下,帮助其解决问题. 同学的问题: 数据库语句:   select  a.task , b.productName  from a , b  where a.id = b.id ;   在b中 一个id 可能有多个productName ,所以 在结果的实体类task中,有字段为List<String> products mapper.xml 中:<resultMap type="task">

mybatis collection 用法

  <resultMap type="map" id="getQuestionCrosswiseByTableNameMap">     <result column="table_name"      property="tableName"/>     <result column="survey_table_id" property="surveyTableId

mybatis的collection查询问题以及使用原生解决方案的结果

之前在springboot+mybatis环境的坑和sql语句简化技巧的第2点提到,数据库的一对多查询可以一次查询多级数据,并且把拿到的数据按id聚合,使父级表和子级表都有数据. 但是这种查询,必然要查询大量的重复父数据,如果不用这种方法,而是分级查询,效果会如何? 要知道这2种数据的查询效率如何,用Python可以简单查询到总时长. 首先用pip install MySQL-python这条指令安装,至于出错解决方法就是https://www.cnblogs.com/superxuezhazh

MyBatis MapperScannerConfigurer配置――MyBatis学习笔记之八

MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八 2012-09-02 20:01:42 标签:Spring MyBatis MapperScannerConfigurer bean默认命名 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://legend2011.blog.51cto.com/3018495/980150 在上一篇博文的示例中,我们在beans.xml中配置了stu

MyBatis中如何通过继承SqlSessionDaoSupport来编写DAO(二)

(本文示例工程源代码下载地址:http://down.51cto.com/data/1975295) 在上一篇博文的最后,介绍了使用@PostConstruct注解标注StudentDao的init方法,这样在Spring完成依赖注入后此方法即会被Spring调用,从而也就完成了studentMapper的初始化工作. 如果只有StudentDao一个DAO类,这样做当然没有问题.不过在实际应用中,必定存在多个DAO类.每个DAO类的初始化方法,除了传入的映射器接口类型(如StudentMapp

Mybatis 高级结果映射 ResultMap Association Collection

作者:ilovejava_2010 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程序,也将是非常棒的,但也没有.结果集映射就是MyBatis为解决这些问题而提供的解决方案.例如,我们如何映射下面这条语句? <!-- Very Complex Statement --> <select id="selectBlogDetails"