<select id="getArticleByCondition" resultMap="articleResult" parameterMap="articlePara">
<![CDATA[
select * from article
]]>
<dynamic prepend="where">
<isNotNull prepend="and" property="type">
(type = #type#)
</isNotNull>
<isNotNull prepend="and" property="title">
(title like %$#title#$%)
</isNotNull>
<isNotNull prepend="and" property="writer">
(writer = #writer#)
</isNotNull>
</dynamic>
</select>
上面是我的ibatis查询语句,问题如下:
(1)当我根据类型(type)或者作者(writer)查时,查不出任何数据,但是,数据库中是有这样的数据的;
(2)当我三个参数都有时,还是没有任何数据;
(3)当我按标题title一个字段查询时,老是报错“未给参数4设置值”。
(4)当根据类型类型(type)和作者(writer)查询时,是能查出相关数据;
请大家帮我看看问题出在哪儿?我是第一次用ibatis的动态映射查询。
另外,我现在只有ibatis实战这本书,但是此书有些东西已经被现在iabtis版本更新了,大家能给我推荐一些吗?能和现在的ibatis版本相对应的,谢谢大家!
<![CDATA[
select * from article
]]>
<dynamic prepend="where">
<isNotNull prepend="and" property="type">
(type = #type#)
</isNotNull>
<isNotNull prepend="and" property="title">
(title like %$#title#$%)
</isNotNull>
<isNotNull prepend="and" property="writer">
(writer = #writer#)
</isNotNull>
</dynamic>
</select>
上面是我的ibatis查询语句,问题如下:
(1)当我根据类型(type)或者作者(writer)查时,查不出任何数据,但是,数据库中是有这样的数据的;
(2)当我三个参数都有时,还是没有任何数据;
(3)当我按标题title一个字段查询时,老是报错“未给参数4设置值”。
(4)当根据类型类型(type)和作者(writer)查询时,是能查出相关数据;
请大家帮我看看问题出在哪儿?我是第一次用ibatis的动态映射查询。
另外,我现在只有ibatis实战这本书,但是此书有些东西已经被现在iabtis版本更新了,大家能给我推荐一些吗?能和现在的ibatis版本相对应的,谢谢大家!
解决方案 »
- 下面这些jar包是做什么的?
- jsp过滤器问题
- 关于POI 单元格为空的问题
- 现在我有一个bean 我想返回一个String数组给JSP页面,那么JSP页面怎么来接收这个数组,以及将其显示出来。
- hibernate 一对多 hql语句问题
- 请问log4j.properties中,怎样屏蔽spring和hibernate的输出出信息?
- 大家帮帮忙把!明天要交jdom修改xml的问题
- 求救:请问 Java 的 Applet 能否实现 socket UDP 与任意端口进行通讯啊??
- 为什么用sqlserverjdbc读取text字段值到1596个字符后,后面变乱码了?
- 工作四年了,现在有点迷茫。求指定一下!
- 求短小的,开源的 JAVA 混淆器
- 如何动态获取一个对象的名字
<dynamic prepend="where">
<isNotEmpty prepend="and" property="type">
type = #type#
</isNotEmpty >
< isNotEmpty prepend="and" property="title">
title like %$#title#$%
</isNotEmpty >
< isNotEmpty prepend="and" property="writer">
writer = #writer#
</isNotEmpty >
</dynamic> 看看
还有
(title like %$#title#$%)
这里应该改为:
(title LIKE '%$title$%')
Article article = new Article();;
//获取用户输入的信息
if (request.getParameter("type").trim() != "") {
int typeId = Integer.parseInt(request.getParameter("type"));
article.setType(typeId);
}else if(request.getParameter("title").trim() != ""){
String title = new String(request.getParameter("title").getBytes("ISO-8859-1"));
article.setTitle(title);
}else if (request.getParameter("writer").trim() != "") {
int writer = Integer.parseInt(request.getParameter("writer"));
article.setWriter(writer);
}else if (request.getParameter("type").trim() != "" && request.getParameter("title").trim() != "") {
int typeId = Integer.parseInt(request.getParameter("type"));
String title = new String(request.getParameter("title").getBytes("ISO-8859-1"));
article.setType(typeId);
article.setTitle(title);
}else if (request.getParameter("type").trim() != "" && request.getParameter("writer").trim() != "") {
int typeId = Integer.parseInt(request.getParameter("type"));
int writer = Integer.parseInt(request.getParameter("writer"));
article.setType(typeId);
article.setWriter(writer);
}else if (request.getParameter("writer").trim() != "" && request.getParameter("title").trim() != ""){
String title = new String(request.getParameter("title").getBytes("ISO-8859-1"));
int writer = Integer.parseInt(request.getParameter("writer"));
article.setTitle(title);
article.setWriter(writer);
}else if (request.getParameter("type").trim() != "" && request.getParameter("title").trim() != ""
&& request.getParameter("writer").trim() != "")
{
int typeId = Integer.parseInt(request.getParameter("type"));
String title = new String(request.getParameter("title").getBytes("ISO-8859-1"));
int writer = Integer.parseInt(request.getParameter("writer"));
article.setType(typeId);
article.setTitle(title);
article.setWriter(writer);
}
ArticleDao articleImpl = new ArticleDaoImpl();
List<Article> articleList = articleImpl.getArticleByCondition(article); //查询文章信息
<dynamic prepend="where">
<isNotEmpty prepend="and" property="type">
type = #type#
</isNotEmpty >
< isNotEmpty prepend="and" property="title">
title like '%$title$%'
</isNotEmpty >
< isNotEmpty prepend="and" property="writer">
writer = #writer#
</isNotEmpty >
</dynamic>
我去掉任意两个条件,留下一个条件,就能查出数据,而三个全在就查不出来了,是何原因呢?
楼主你的if条件以及if{}里面都用了无数次
request.getParameter("type");
request.getParameter("title").getBytes("ISO-8859-1");
request.getParameter("writer"); 何不在最上面判断下呢?对了取到有值了记得trim一下,说不定是空格的原因。
记得ibatis似乎可以打印sql的,不如你把sql调出来看一下。
如果你传入的是个对象的话,应该是parameterClass吧