mybatis注解@select问题,sql语句 in的问题

RockeyCui 2016-05-04 05:07:09
现在的问题是有7个退款标志,
0-新申请,商户未审批;
1-商户审批通过;
2-商户审批拒绝;
3-平台经办通过;
4-平台经办拒绝;
5-平台审批通过;
6-平台审批拒绝;
7-财务复核通过;
其中1 3 5 反馈给客户的状态是处理中,2 4 6为拒绝,7 为通过。
客户的查询条件只有三个状态,即 处理中,拒绝,通过。
所以我写的sql语句如下,当客户选处理中时,如何把 state (‘1’,‘ 3’,‘ 5’) 传过去,应该定义数组 还是什么?
queryParam.put("merid", "1001");// 测试参数
// queryParam.put("merid", user.getCustomerId());
queryParam.put("merorderid", "%" + merorderid + "%");
if ("0".equals(state)) {
String sta = "('2', '4', '6')";
queryParam.put("state", sta);
}
else if ("1".equals(state)) {
queryParam.put("state", "7");
}
else if ("2".equals(state)) {
String sta = "('1', '3', '5')";
queryParam.put("state", sta);
}

这段代码并不能解决问题 ,应该怎么写?

@Select({
"select * from ",
"(select tmp.*,rownum rr from ",
"( ",
"select REQ.* ",
"from TBL_GPY_RTNREQ REQ ",
"where REQ.MER_ID=#{merid,jdbcType=VARCHAR} ",
"and (REQ.RTN_TYPE='0' or REQ.RTN_TYPE is null) ",
//我的sql语句用到了in,该怎么把参数传过来?
"and (#{state,jdbcType=VARCHAR} is null ORREQ.RTN_STA IN #{state,jdbcType=VARCHAR})",
"and (#{merorderid,jdbcType=VARCHAR} is null OR REQ.MER_ORDER_NO like #{merorderid,jdbcType=VARCHAR}) ",
"and (#{starttime,jdbcType=VARCHAR} is null OR substr(REQ.PLAT_DATE,0,8)>=#{starttime,jdbcType=VARCHAR}) ",
"and (#{endtime,jdbcType=VARCHAR} is null OR substr(REQ.PLAT_DATE,0,8)<=#{endtime,jdbcType=VARCHAR}) ",
"order by REQ.PLAT_DATE desc ",
") tmp ",
"where rownum <= #{end,jdbcType=VARCHAR}) ",
"where rr > #{begin,jdbcType=VARCHAR} "
})
...全文
1639 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
RockeyCui 2016-05-04
  • 打赏
  • 举报
回复 1
自己解决了,把sql语句 "and (#{state,jdbcType=VARCHAR} is null ORREQ.RTN_STA IN #{state,jdbcType=VARCHAR})", 改为"and (#{state,jdbcType=VARCHAR} is null ORREQ.RTN_STA IN ${state})", 用到了sql拼接

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧