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

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

1、原因

如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条。

2、解决办法

级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的。但在mybatis中主从表需要为相同字段名设置别名。设置了别名就OK了。

例子:

主表Standard, 从表StandEntity,均有名为id的字段

<resultMap id="StandardAndEntityResultMap" type="whu.edu.irlab.model.Standard" extends="BaseResultMap">
    <collection property="standEntities" ofType="whu.edu.irlab.model.StandEntity">
        (依据下面的select中更名的字段id别名se_id,在此将相同的字段名改为别名)
        <id column="se_id" property="id" jdbcType="INTEGER" />
        <result column="stand_id" property="standId" jdbcType="INTEGER" />
        <result column="stand_name" property="standName" jdbcType="VARCHAR" />
        <result column="entity_name" property="entityName" jdbcType="VARCHAR" />
    </collection>
</resultMap>

<select id="findAllStandardAndEntity" resultMap="StandardAndEntityResultMap">
    select
    standard.*,
    standard_entity.id se_id,(在此将两表中相同的字段名id改为别名se_id,对应的上面collection部分也需要更改)
    standard_entity.stand_id,
    standard_entity.stand_name,
    standard_entity.entity_name
    from
      standard INNER JOIN standard_entity on standard.id = standard_entity.stand_id
</select>

原文链接 http://my.oschina.net/u/1020238/blog/517115?fromerr=qPbx9Vfc

时间: 2024-11-05 08:25:29

Mybatis Collection查询集合只出现一条数据的相关文章

Android 自定义Adapter 但listview 只显示第一条数据

楼主让这个问题郁闷了一晚上.....在logcat里明明显示adapter的getview方法里的list大于一条数据 ,但posotion却一直是0.....运行后也只显示list[0]里面的数据....最后的最后原来错误出在布局文件上 我以前的是这样的; <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <!-- listv

sql过滤掉重复记录,只保留一条数据

--过滤掉重复记录,只保留一条数据delete from gzfw_yhxxwhere Zjhm in (select Zjhm from gzfw_yhxx group by Zjhm having count(Zjhm) > 1)and rowid not in (select min(rowid) from gzfw_yhxx group by Zjhm having count(Zjhm )>1)

java中使用sublist方法获取list集合的前1000条数据

在java.util.List中有一个subList()方法,作用是返回一个List集合的其中一部分视图. List<E>(对象的集合).subList(int fromIndex, int toIndex); 1.因为返回的是List<E>中一部分对象的集合,返回的结果集合也是List<E>的子集合,并是以下标索引取值. 2.父集合List<E>以fromIndex开始(包含),到toIndex结束(不包含)的部分为返回的子集合. 3.因为是通过下标索引取

PHP通过API搜索elasticsearch只获得10条数据

PHP通过API对ES进行搜索后发现只能获取10条数据,搜索语句如下: {   "query": {     "filtered": {       "query": {         "query_string": {           "query": "level:\"警告\" AND source_name:\"ASP.NET\" ",

shell第一列相同即判断为重复,只取其中一条数据

例如 123456.txt内容如下 90115601,2137786735     36684 90115601,2137786735     36684 90118301,17751822       34898 90145133,2050186877     3847 90145133,2050186877     3847 90151825,3580430507     37974 90151825,3580430507     37974 90188754,2987861307    

SQL Server分组查询某最大值的整条数据(包含linq写法)

想实现如下效果,就是分组后时间最大的那一条数据: 1.SQL SELECT * FROM ( SELECT * , ROW_NUMBER() OVER ( PARTITION BY RIP_GUID ORDER BY RU_CreatedTime DESC ) rn FROM RIP_FlowInfo ) t WHERE t.rn <= 1; 2.LINQ var groupQuery = from t in query group t by t.RIP_Guid into g select n

mybatis使用collection查询集合属性规则

接上篇mybatis使用associaton进行分步查询 相关的类还是上篇中的类. 查询部门的时候将部门对应的所有员工信息也查询出来 DepartmentMapper.xml <!--嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则 --> <resultMap type="com.mybatis.bean.Department" id="MyDept"> <id column="did"

SQL分组查询每组前几条数据

/*第一种实现方法,效率低并且有错误*/ DECLARE @DD DATETIME SET @DD = GETDATE() SELECT a.GoodsID , a.Account , a.LastUpdate FROM dbo.tb_App_Goods a LEFT JOIN dbo.tb_App_Goods b ON a.Account = b.Account AND a.LastUpdate > b.LastUpdate GROUP BY a.GoodsID , a.Account , a

SQL删除重复数据只保留一条数据

1.表结构与数据: CREATE TABLE tablezzl( id int, name VARCHAR(255) ); 2.查询出重复的数据: SELECT name FROM tablezzl GROUP BY name HAVING COUNT(name)>1 3.查询出要保留的重复数据: SELECT MIN(id) ids FROM tablezzl GROUP BY NAME HAVING COUNT(name)>1 4.最终的SQL: DELETE FROM tablezzl