mybatis xml文件为:

 <resultMap id="BaseResultMap" type="com.test.SubscribeOrder">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="channel_id" jdbcType="INTEGER" property="channelId" />
<result column="order_no" jdbcType="VARCHAR" property="orderNo" />
<result column="user_id" jdbcType="VARCHAR" property="userId" />
<result column="jr_id" jdbcType="VARCHAR" property="jrId" />
<result column="trade_amount" jdbcType="BIGINT" property="tradeAmount" />
<result column="profit" jdbcType="BIGINT" property="profit" />
<result column="trade_time" jdbcType="TIMESTAMP" property="tradeTime" />
<result column="state" jdbcType="TINYINT" property="state" />
<result column="created_date" jdbcType="TIMESTAMP" property="createdDate" />
<result column="modified_date" jdbcType="TIMESTAMP" property="modifiedDate" />
<association property="project" resultMap="projectMap" javaType="com.test.Project"/>
</resultMap>
<resultMap id="projectMap" type="com.test.Project">
<id column="project_id" property="id" jdbcType="INTEGER"/>
<result column="project_name" property="projectName" jdbcType="VARCHAR" />
<result column="project_code" property="projectCode" jdbcType="VARCHAR" />
</resultMap>

sql语句为:

   select
a.id,
a.channel_id,
a.order_no,
a.project_id,
b.project_name,
b.project_code
from fp_subscribe_order a inner join fp_project b
on a.project_id = b.id where 1=1
<if test="orderNo!=null">
and a.order_no=#{orderNo}
</if>
<if test="projectCode!=null">
and b.project_code=#{projectCode}
</if>
<if test="projectName!=null">
and b.project_name=#{projectName}
</if>
<if test="userId!=null">
and a.user_id=#{userId}
</if>

结果只会返回一个结果

处理:首先需要说明 select的列不需要和对应的resultMap的元素数量一一对应;mybatis使用association 时必须要保证key和association并列,简单来说就是select后面的列很多都可以省但BaseResultMap中的数据库字段不可以省,修改过的sql语句为

<select id="findSubscribeOrdersByPage" resultMap="BaseResultMap">
select
a.id,
a.channel_id,
a.order_no,
a.user_id,
a.jr_id,
a.trade_time,
a.trade_amount,
a.profit,
a.state ,
a.created_date,
a.modified_date,
a.project_id,
b.project_name,
b.project_code
from fp_subscribe_order a inner join fp_project b
on a.project_id = b.id where 1=1
<if test="orderNo!=null">
and a.order_no=#{orderNo}
</if>
<if test="projectCode!=null">
and b.project_code=#{projectCode}
</if>
<if test="projectName!=null">
and b.project_name=#{projectName}
</if>
<if test="userId!=null">
and a.user_id=#{userId}
</if>
</select>

mybaties association 只返回一个结果问题处理的更多相关文章

  1. exec sp_spaceused如何只返回一个结果集(转载)

    问: 我想把每天数据库的大小自动保存到table中但是exec sp_spaceused是返回2个表,执行下面的语句出错,如何解决? drop table db_size go create tabl ...

  2. spring mvc返回json字符串数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable

    1.spring mvc返回json数据,只需要返回一个java bean对象就行,只要这个java bean 对象实现了序列化serializeable 2. @RequestMapping(val ...

  3. Entity Framework 6 Recipes 2nd Edition(11-6)译 -> 从一个”模型定义”函数里返回一个复杂类型

    11-6.从一个”模型定义”函数里返回一个复杂类型 问题 想要从一个”模型定义”函数返回一个复杂类型 解决方案 假设我们有一个病人(patient)和他们访客(visit)的模型,如 Figure 1 ...

  4. VC只运行一个程序实例

    方法有很多,以下只是提供一种用的多的 一. 单文档程序 在程序App类的InitInstance中添加如下代码 BOOL CDDZApp::InitInstance() { /*只运行一个实例*/ / ...

  5. C# JabLib系列之如何保证只运行一个应用程序的实现

    保证只运行一个应用程序的C#实现: using System;using System.Collections.Generic;using System.Linq;using System.Windo ...

  6. Linux编程之《只运行一个实例》

    概述 有些时候,我们要求一个程序在系统中只能启动一个实例.比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例.原因很简单,如果同时启动几个实 ...

  7. ADO.NET笔记——利用Command对象的ExecuteScalar()方法返回一个数据值

    相关知识: 有些SQL操作,例如SUM,只会从数据库返回一个数据值,而不是多行数据 尽管也可以使用ExecuteReader()返回一个DataReader对象,代表该数据值,但是使用Command对 ...

  8. 利用TCP 客户端---->服务端 传送文件到指定路径,并返回一个友好的回馈

    首先盲写的一个传输文件的方法,但测试发现了一个非常不容易发现的问题,这里先说明一下. 错误的代码如下: package com.TCP.java; import java.io.File; impor ...

  9. 【百度地图API】发布静态图API啦!只需一个网址,即可展示定制百度地图!

    原文:[百度地图API]发布静态图API啦!只需一个网址,即可展示定制百度地图! 摘要: 百度地图静态图API!您无须执行任何“特殊”操作便可在网页上显示此图片. 不需要 JavaScript.我们只 ...

随机推荐

  1. 老齐python-基础2(字符串)

    1.字符串 1.1索引和切片 索引: >>> lang = "study python" >>> lang[0] 's' >>> ...

  2. idea之jrebel热部署使用教程

    JRebel是一个J2EE热部署的工具.使用它可以减少浪费8-18%的开发时间在项目的构建和部署上.虽然Java也提供了HotSpot的JVM,但是如果你修改的类中有方法名称变动的话,HotSpot就 ...

  3. Fluent NHibernate AutoMapping Conventions

    前言 使用nhibernate在项目中不管是代码或者xml文件映射方式,如果项目较大编写映射也应该算一笔大的工作量了,使用Fluent Nhibernate自己编写映射规则,将从conventions ...

  4. 关于FPGA复位的认识

    xilinx推荐尽量不复位,利用上电初始化,如果使用过程中需要复位,采用同步高复位. 如果逻辑工程较大,复位扇出会较多,会很影响时序,有以下常用方法: 复位信号按照不同时钟域分为rst0..rstn, ...

  5. librtmp接收flv流中提取h264码流:根据多个资料汇总

    rtmpdump可以下载rtmp流并保存成flv文件.如果要对流中的音频或视频单独处理,需要根据flv协议分别提取.简单修改rtmpdump代码,增加相应功能.1 提取音频:rtmpdump程序在Do ...

  6. HTTP Get与Post请求

    HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP ...

  7. Linux的内存管理机制

    原文作者:技术成就梦想 链接:http://ixdba.blog.51cto.com/2895551/541355 一 物理内存和虚拟内存          我们知道,直接从物理内存读写数据要比从硬盘 ...

  8. 第一个PyQt5窗口

    1.使用pycharm,生成UI文件 右键->External Tools->QtDesigner 选择Main Window创建一个窗体,从右边拖动组件到窗体上,保存路径到自己的工程目录 ...

  9. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    证券代码 证券简称 大股东持股比例 [日期] 最新 [大股东排名] 第1名 [单位] % 总市值2 [交易日期] 最新收盘日 [单位] 亿元 000004.SZ 国农科技 28.4200 23.261 ...

  10. cinder backup ceph的配置和使用

    Backup 是将 volume 备份到别的地方(备份设备),将来可以通过 restore 操作恢复. 初看 backup 功能好像与 snapshot 很相似,都可以保存 volume 的当前状态, ...