页面参数传递问题

wind052311 2014-10-24 09:31:33
做了一个查找,同样一个方法,查找用户时
==>  Preparing: select count(1) from t_query_log WHERE deptname like '%'||?||'%' 
==> Parameters: 0(Integer)
是integer类型的,在debug的时候,参数数据传递无误。
查找用户IP时,可以查找
Preparing: select * from ( select ID,USERNAME,USERNUMBER,DEPTNAME,DEPCODE,QUERYPARAM,QUERYDATE,REMOTEADDR,QUERYTYPE,QUERYRESULT from t_query_log WHERE usernumber like '%'||?||'%' order by querydate desc ) where rownum <= 10 
==> Parameters: z(String)

就是不明白为什么一个传递的是integer,一个传递的是string型的,求大神解答
...全文
172 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
奇葩与诡异的问题,不过我平时传参都不写parameterType的,直接就可以使用#来获取对象属性。你用的MYBATIS哪个版本呀!
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 6 楼 u013117472 的回复:
看看mapper.xml中的parameterType
<select id="selectForPage" parameterType="com.zl.bx.entity.QueryLog" resultType="com.zl.bx.entity.QueryLog">
		select <include refid="Base_Column_List"/>
是个实体类
	private String username;
	/**
	 * 用户身份证
	 */
	private String usernumber;
	/**
	 * 部门名
	 */
我是身份证可以查,部门名不能查
huoxu 2014-10-24
  • 打赏
  • 举报
回复
引用 4 楼 wind052311 的回复:
[quote=引用 2 楼 longhun012 的回复:] 自己 找 mybatis 里面 的具体的sql 看看 sql的 参数 是怎么写的 就知道了
values(#{id,jdbcType=VARCHAR}
			,#{username,jdbcType=VARCHAR},#{usernumber,jdbcType=VARCHAR}
			,#{deptname,jdbcType=VARCHAR},#{depcode,jdbcType=VARCHAR}
			,#{queryparam,jdbcType=VARCHAR},#{querydate,jdbcType=TIMESTAMP}
			,#{remoteAddr,jdbcType=VARCHAR},#{queryType,jdbcType=NUMERIC}
			,#{queryResult,jdbcType=NUMERIC})
<if test="usernumber !=null and usernumber !=''">
				usernumber like '%'||#{usernumber}||'%'
			</if>
			<if test="deptname !=null and deptname !=''">
				and deptname LIKE CONCAT(CONCAT('%', #{deptname}), '%')
			</if>
实体类里也都是设置的String。。。[/quote] usernumber like '%'||#{usernumber}||'%' 用#号 标示 里面是数字, 用$ 标示是 字符串
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 5 楼 littlebrain4solving 的回复:
用${usernumber}符号试试!
不行。。。一样的
xieyunyuwoxin 2014-10-24
  • 打赏
  • 举报
回复
看看mapper.xml中的parameterType
  • 打赏
  • 举报
回复
用${usernumber}符号试试!
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 2 楼 longhun012 的回复:
自己 找 mybatis 里面 的具体的sql 看看 sql的 参数 是怎么写的 就知道了
values(#{id,jdbcType=VARCHAR}
			,#{username,jdbcType=VARCHAR},#{usernumber,jdbcType=VARCHAR}
			,#{deptname,jdbcType=VARCHAR},#{depcode,jdbcType=VARCHAR}
			,#{queryparam,jdbcType=VARCHAR},#{querydate,jdbcType=TIMESTAMP}
			,#{remoteAddr,jdbcType=VARCHAR},#{queryType,jdbcType=NUMERIC}
			,#{queryResult,jdbcType=NUMERIC})
<if test="usernumber !=null and usernumber !=''">
				usernumber like '%'||#{usernumber}||'%'
			</if>
			<if test="deptname !=null and deptname !=''">
				and deptname LIKE CONCAT(CONCAT('%', #{deptname}), '%')
			</if>
实体类里也都是设置的String。。。
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 1 楼 sc6231565 的回复:
我自己的理解 类型转换 是由TypeHandler接口来控制 每个类型都有默认的TypeHandler来控制 前台传参过来都是 当做String类型 然后在mybatis转 数据库类型的时候 它应该调用了某TypeHandler,能够自动识别 转换
大哥,我想知道为什么会出现我这种情况,还有解决方法。。。
huoxu 2014-10-24
  • 打赏
  • 举报
回复
自己 找 mybatis 里面 的具体的sql 看看 sql的 参数 是怎么写的 就知道了
Magical茏 2014-10-24
  • 打赏
  • 举报
回复
我自己的理解 类型转换 是由TypeHandler接口来控制 每个类型都有默认的TypeHandler来控制 前台传参过来都是 当做String类型 然后在mybatis转 数据库类型的时候 它应该调用了某TypeHandler,能够自动识别 转换
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 14 楼 maihao110 的回复:
mybatis我一般这么写like select count(1) from t_query_log WHERE deptname like '%${value}%'
用你的方法还是一样的结果,感觉应该不是数据库的问题吧。。。
洋葱汤_ 2014-10-24
  • 打赏
  • 举报
回复
public HSSFWorkbook readerFromExcel(String path){  
  POIFSFileSystem fs = null; 
  HSSFWorkbook workbook = null; 
  File file = new File(path); 
   
  if(file.exists()){ 
  FileInputStream fin; 
  try { 
   fin = new FileInputStream(file); 
   fs = new POIFSFileSystem(fin); 
   workbook = new HSSFWorkbook(fs); 
  } catch (FileNotFoundException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } catch (IOException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 
  } 
   
  return workbook;
  }
  return null;
 }
  • 打赏
  • 举报
回复
mybatis我一般这么写like select count(1) from t_query_log WHERE deptname like '%${value}%'
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 12 楼 maihao110 的回复:
不明白,这种情况会引发什么问题吗?
就是我的功能不能实现,原先是模糊查询,然后类型传错了,到最后传过来的都是0,就查不出来了。
  • 打赏
  • 举报
回复
不明白,这种情况会引发什么问题吗?
wind052311 2014-10-24
  • 打赏
  • 举报
回复
引用 10 楼 littlebrain4solving 的回复:
奇葩与诡异的问题,不过我平时传参都不写parameterType的,直接就可以使用#来获取对象属性。你用的MYBATIS哪个版本呀!
我也不知道,那个没关注过。。。

81,091

社区成员

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

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