关于不确定字段查询问题-mybatis

作者:超级管理员 更新时间:2017-10-31 17:58:58 来源:未知 点击:15642
本帖最后由liushuiwuyizhe于2015-07-2215:39:09编辑这是查询表单,可以输入任意数目的查询条件,这是mybatis配置文件中的查询方法我使用post提交方式,若条件不填写完的
本帖最后由 liushuiwuyizhe 于 2015-07-22 15:39:09 编辑

这是查询表单,可以输入任意数目的查询条件,

这是mybatis配置文件中的查询方法

我使用post提交方式,若条件不填写完的话,根本找不到路径,报404
我改用get方式,则可以找到,但是查询结果为空

-------------------------------
这和你的Mybatis是没关系的,sql写的是没问题的(除非你的resultMap,可能有问题)~主要还是你页面到后台这一块的逻辑有问题~仔细看一下你查询这一块的页面和后台把
-------------------------------
这你自己调试一下就行了,你可以先用firebug或者chrome的调试模式下,看看你post的参数是什么,打断点到你请求的url,即你自己的控制层(controller或者是action),看看方法能不能进来,不能进来的话很有可能就报404错误了.
这样的话,问题初步会断定你是因为参数不匹配才造成的404报错.
常见解决有几种:
1.如果你前台是用jquery做的话,直接传参可以用$('#formID').serialize().
或者你就可以用ajax的方式一个个传递参数就好
data{
  param1:param1Value,
 param2:param2Value
 .....
}
2.如果你controller层用的springmvc的话,可以将参数那里设置以下require=false就好了.

希望对楼主有帮助
-------------------------------




引用 2 楼 software_gemeng 的回复:
这你自己调试一下就行了,你可以先用firebug或者chrome的调试模式下,看看你post的参数是什么,打断点到你请求的url,即你自己的控制层(controller或者是action),看看方法能不能进来,不能进来的话很有可能就报404错误了.
这样的话,问题初步会断定你是因为参数不匹配才造成的404报错.
常见解决有几种:
1.如果你前台是用jquery做的话,直接传参可以用$('#formID').serialize().
或者你就可以用ajax的方式一个个传递参数就好
data{
  param1:param1Value,
 param2:param2Value
 .....
}
2.如果你controller层用的springmvc的话,可以将参数那里设置以下require=false就好了.
希望对楼主有帮助


意思是在所有的参数前面都加上一个require=false吗,刚刚试过了,不行,错误还是400,难道除了用js先判断各个字段里的值是否为空,然后通过ajax提交就没有别的办法了吗,我能不能将controller层的方法里设置为可变参数。
-------------------------------
???为何会404?  

同样的springmvc+jsp ,同样的mybatis参数分页

<if test="orderId != null and orderId != ''">
   and order_id = #{orderId,jdbcType=BIGINT}
   </if>
   <if test="orderItem != null and orderItem.size() > 0">
   and order_id in 
   <foreach item="item" index="index" collection="orderItem" open="(" separator="," close=")">
            #{item}
        </foreach>
   </if>
   <if test="fromOrderId != null and fromOrderId != ''">
   and order_type_id = #{fromOrderId,jdbcType=BIGINT}
   </if>
   <if test="startFinDate != null and startFinDate != ''">
   <![CDATA[  and DATE(finish_dt) >= #{startFinDate,jdbcType=TIMESTAMP} ]]>
   </if>
   <if test="endFinDate != null and endFinDate != ''">
   <![CDATA[  and DATE(finish_dt) <= #{endFinDate,jdbcType=TIMESTAMP} ]]>
   </if>



-------------------------------
1、那些Integer参数,初始值是0 ,你不传参数,默认会传个0去查询 这个需要谨记

2、你页面404与mybatis是没关系的,与数据更没关系,肯定是你controller层写的有问题

3、你这种分页提交,参数记得回传

-------------------------------
引用 4 楼 shijing266 的回复:
???为何会404?  

同样的springmvc+jsp ,同样的mybatis参数分页

<if test="orderId != null and orderId != ''">
   and order_id = #{orderId,jdbcType=BIGINT}
   </if>
   <if test="orderItem != null and orderItem.size() > 0">
   and order_id in 
   <foreach item="item" index="index" collection="orderItem" open="(" separator="," close=")">
            #{item}
        </foreach>
   </if>
   <if test="fromOrderId != null and fromOrderId != ''">
   and order_type_id = #{fromOrderId,jdbcType=BIGINT}
   </if>
   <if test="startFinDate != null and startFinDate != ''">
   <![CDATA[  and DATE(finish_dt) >= #{startFinDate,jdbcType=TIMESTAMP} ]]>
   </if>
   <if test="endFinDate != null and endFinDate != ''">
   <![CDATA[  and DATE(finish_dt) <= #{endFinDate,jdbcType=TIMESTAMP} ]]>
   </if>

是400,我写错了,现在很明显的是这个跟mybatis没关系
是请求出问题了,请求参数的个数是不确定的,

然后无法映射到对应的方法中去,所以就400了。
-------------------------------
还搞得这么麻烦,为啥不用spring mvc自带的model参数?

页面照样用${变量名}取就是

@RequestMapping(value="/orderList" ,method = RequestMethod.POST)
public ModelAndView orderBuyPage(HttpServletRequest request ,Model model,
@RequestParam(value="pageNum" ,defaultValue="1")String pageNum,
@RequestParam(value="pageSize" ,defaultValue="10")String pageSize){
String orderIdOrProdName = request.getParameter("orderIdOrProdName");
String fromOrderId = request.getParameter("fromOrderId");
String startFinDate = request.getParameter("startFinDate");
String endFinDate = request.getParameter("endFinDate");
String sellOrgName = request.getParameter("sellOrgName");
String evaluate = request.getParameter("evaluate");
String orderStatus = request.getParameter("orderStatus");
String trnsctWay = request.getParameter("trnsctWay");

List<TrnsctWayBO> listTrn = orderService.getTrnsctList();
model.addAttribute("listTrn", listTrn);
List<OrderTypeBO> listOrderType = orderService.getOrderTypeList();
model.addAttribute("listOrderType", listOrderType);
List<StatusBo> listStatus = orderService.getOrderStatusList();
model.addAttribute("listStatus", listStatus);
//分页查询订单列表
PageBO<OrderBO> page = orderService.queryPageByBuyCondition(orderIdOrProdName, 
fromOrderId, startFinDate, endFinDate, sellOrgName, 
evaluate, orderStatus, trnsctWay, pageNum, pageSize);
model.addAttribute("orderIdOrProdName", orderIdOrProdName);
model.addAttribute("fromOrderId", fromOrderId);
model.addAttribute("startFinDate", startFinDate);
model.addAttribute("endFinDate", endFinDate);
model.addAttribute("sellOrgName", sellOrgName);
model.addAttribute("evaluate", evaluate);
model.addAttribute("orderStatus", orderStatus);
model.addAttribute("trnsctWay", trnsctWay);
model.addAttribute("page", page);
return getModelAndView("/order/buyer/buyer_order_list");
}
-------------------------------
引用 5 楼 shijing266 的回复:
1、那些Integer参数,初始值是0 ,你不传参数,默认会传个0去查询 这个需要谨记

2、你页面404与mybatis是没关系的,与数据更没关系,肯定是你controller层写的有问题

3、你这种分页提交,参数记得回传


记得你查询的参数回传
-------------------------------
<select id="queryKlineDataAndStockInfo" parameterType="com.dzkj.ew.bean.QueryVo" resultMap="ksfResult">
SELECT 
`open_price`, 
`close_price`, 
`high_price`, 
`low_price`, 
`deal_number`, 
`deal_amount`, 
`deal_date`, 
`win_rate`, 
`emotional_indicator`, 
`profit_loss_ratio`, 
<if test="singleField != null">
  #{singleField} index_field
</if>
<if test="singleField == null">
median index_field
</if>
FROM 
 ew_dayline e INNER JOIN stock_basic_info s ON e.deal_date = s.info_date
 where e.exponent_id = 1
 ORDER BY deal_date ASC;  
</select>

推荐阅读

热门内容

想了好久,还是不知道在哪出问题了,驱动包

前台错误:type Exception ...

关于java多线程的一个问题

做一个多线程的题目实现*g*g*g*g*...

萌新小白学习遇到问题,求各位大佬帮忙看一

这个是题目package edu.exa...

关于不确定字段查询问题-mybatis

本帖最后由liushuiwuyizhe于...

maven项目打包

求教。一个关于maven打包的问题---...

Java maven项目启动时报错,求救

我在svn上档下来的项目然后转成mave...

郁闷,明明已经导入这些JAR包了怎么还是

在web.xml里面加了这个配置,想通过...

一直报无法解析.hbm.xml 困扰了

一直报无法解析.hbm.xml   困扰...

一直报Could not parse m

这问题整整困扰了 我一天一夜  请大神帮...

什么原因造成mysql无法保存数据

1、我删除了所有表的主外键关联2、也没找...

最新内容

swing 判断单选框问题

    鼓动鼓动 swing  用的 windowbuilder 来进行设计的,...

关于java客户端与mqtt服务器用证书连接的问题

在网上找了很多例子,也实现了用java客户端通过证书连接mqtt服务器,但是有疑...

想了好久,还是不知道在哪出问题了,驱动包也重新下载了好几次,用户密码没问题

前台错误:type Exception reportmessage An exc...

GlassFish5部署应用报错,求大神教育

GlassFish5部署应用报错:Error occurred during d...

关于java多线程的一个问题

做一个多线程的题目实现*g*g*g*g*g*g.......实现其实不难,不过中...

萌新小白学习遇到问题,求各位大佬帮忙看一下哪里出错了?

这个是题目package edu.exam;import java.util.S...

最近学习spring aop 遇到的小白问题,求解答!!

package com.dao;import org.springframewo...

Java代码生成的随机数如果数据库的主键不能对应

建了一张表,查询到了所有题目的数量,然后根据题数随机生成你输入的几个随机数:(i...

web项目在MyEclipse部署正常,打成War包部署到外部Tomcat报空指针

如题,新人小白一个,新网大家帮帮忙用myeclipse启用外部Tomcat调试也...

IDEA里无法创建命名为build的目录?

IDEA里,无法创建命名为build的目录。提示为ignored name,无法...

魅红女性手机微博上线 魅蓝有女朋友了?

    中关村在线消息:今天上午,一个名为“魅红女性手机”的微博账号悄然上线,从...

使用spring+spring MVC + hibernate 实现不同数据库类型(sql server & orcale)切换获取数据

最近按照公司要求  搭个SSH框架   要动态切换获取数据库  网上百度了很多教...

求1到N的和

// 递归function Add($num){    switch ($num...

魅蓝打脸!未发售Note6绿色版高价转卖

    中关村在线消息:日前,有贴吧有网友晒出了他购买的海贼王典藏版的魅蓝Not...

过滤器里面可以拿到session,但是从session里面取出的值为空

本帖最后由zhouhai6833于2017-10-2710:54:55编辑用的s...

Maven的no such method错误

 这个方法在spring jar包里找到了,那么是不是有冲突了?还有我的IDEA...

curl无法获取数据,浏览器正常

curl 无法获取数据 ,报错:Empty reply from serverc...

诺基亚东家HMD新人事任命 临时CEO转正

    中关村在线消息:今天,诺基亚的东家HMD宣布了新的人事任命:临时CEO弗...

升级使用tomcat8.5,jdk8以后出现的报错

信息: Error parsing HTTP request header No...

curl 无法获取数据 Empty reply from server

curlDataTest("http://zhannei.baidu.com/a...