本人刚刚自学了Ibatis,我现在需要查询一个两个时间之间的数据,使用的是Map传参数,但一直查不出数据,也不报错,请高手指点下,不使用map传参数也行,只要有解决的方法。谢谢。
数据库中中表t_work有一个时间的字段,对应的Bean中也有一个时间类型的属性,和表的时间类型字段相对应。
我把我的大概代码贴出来
我用log4j配置后,把sql语句打印出来,结果没有打印出where后面接的条件,就一个select * from t_work语句,不知道怎么后面的where条件没接上去,我再把判断参数为空的条件去掉,打印出来的语句是:select * from t_work where work_time between ? and ? 这样,Map中的参数也没传进去。
public class WorkBean {
private int work_id;
private String workname;
private String worktype;
private Date worktime;
private Float workmoney;
private int workset;
private int workproof;
private String worktext;
private String workexpand1;
private String workexpand2;
private int workexpand3;
private int workexpand4;
//get set方法
}
dao类
public List<WorkBean> findWork(Map hashMap){
List<WorkBean> workList = new ArrayList();
try{
DaoUtil.getConnection().queryForList("findWork", hashMap);
}catch(Exception ex){
ex.printStackTrace();
}
return workList;
}
public static void main(String[] args) {
WorkDao dao = new WorkDao();
Map<String,Object> wrokMap = new HashMap();
wrokMap.put("startTime", "2009-08-30 16:38:32.0");
wrokMap.put("endTime", "2009-08-30 16:39:08.0");
wrokMap.put("userName", "admin");
List<WorkBean> workList = new ArrayList();
workList = dao.findWork(wrokMap);
System.out.println(workList.size()+"--------");
}
对应的映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap>
<typeAlias alias="work" type="com.house.bean.WorkBean"/>
<resultMap id="workMap" class="work">
<result property="work_id" column="work_id" />
<result property="workname" column="work_name" />
<result property="worktype" column="work_type" />
<result property="worktime" column="work_time" />
<result property="workmoney" column="work_money" />
<result property="workset" column="work_set" />
<result property="workproof" column="work_proof" />
<result property="worktext" column="work_text" />
<result property="workexpand1" column="work_expand1" />
<result property="workexpand2" column="work_expand2" />
<result property="workexpand3" column="work_expand3" />
<result property="workexpand4" column="work_expand4" />
</resultMap>
<select id="findWork" resultClass="work" parameterClass="java.util.Map">
select * from t_work
<dynamic prepend="where">
<isParameterPresent>
<isNotEmpty prepend="and" property="work_time">
work_time between #startTime# and #endTime#
</isNotEmpty>
<isNotEmpty prepend="AND" property="work_name">
work_name=#userName#
</isNotEmpty>
</isParameterPresent>
</dynamic>
</select>
</sqlMap>
t_work脚本
create table t_work
(
work_id int primary key identity not null ,--主键,自动增长
work_name varchar(20) not null,
work_type varchar(20) not null,
work_time datetime not null ,
work_money float ,
work_set int ,
work_proof int not null ,
work_text varchar(2000) ,
work_expand1 varchar(200) , -- 扩展字段1
work_expand2 varchar(2000),
work_expand3 int ,
work_expand4 int
)
哪位可以看出我问出在哪里吗?程序不报错,但返回的list一直是0,或者哪位有相关的demo发一个到我邮箱吧:jdbc4@163.com,谢谢。
分享到:
相关推荐
ibatis动态多条件组合查询 实例 说明
在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...
struts+spring+ibatis+extjs完美整合! 联系方式:QQ360310087 如果有需要与本人沟通的.
Ibatis 是一款轻量级的持久层框架,它与 JDBC 集成,但比 JDBC 更加方便,更易于管理数据库操作。...在实际项目中,可以根据具体需求调整查询策略,如添加条件查询、分页等,以满足不同的业务场景。
在本资源中,"iBatis条件查询"着重展示了如何根据业务需求定制SQL语句进行数据检索,尤其在不涉及复杂关联查询的情况下,iBatis可以提供高效且简单的解决方案。 首先,iBatis的核心概念是SQL Map,它是一个XML配置...
iBatis 动态查询条件...* 在使用 iBatis 的动态查询条件时,需要注意 SQL 注入问题。 iBatis 的动态查询条件提供了强大的功能,可以根据不同的参数生成不同的 SQL 语句,使得开发者可以更方便地实现复杂的查询逻辑。
当我们需要进行多表查询时,iBatis提供了一种高效且易于管理的方式。本文将深入探讨iBatis在处理多表查询时的具体步骤和技巧。 ### 1. iBatis简介 iBatis 是一个基于Java的持久层框架,它简化了数据库访问,并避免...
iBatis多对多关系详解 iBatis是一种流行的持久层框架,用于简化Java应用程序和关系数据库之间的交互。在本文档中,我们将详细介绍iBatis在处理多对多关系时的配置和实现。 多对多关系 多对多关系是一种常见的关系...
### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...
以上内容详细介绍了 ibatis 中动态查询的基本原理及具体实现方法,包括模糊查询、多条件组合查询以及使用 Map 作为参数的高级用法。这些知识点对于深入理解 ibatis 的动态查询机制非常重要,可以帮助开发者更高效地...
针对ibatis的多参数查询问题,这里介绍三种常见的解决方法: ##### 1. 使用字符串(String)替代 **实现方式:** - 在SQL映射文件中,定义`<select>`标签的`parameterClass`属性为`java.lang.String`。 - 直接在...
在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...
### iBatis 多表查询知识点详解 #### 一、iBatis简介 iBatis 是一款优秀的持久层框架,它将 SQL 映射到 Java 对象,简化了 JDBC 编程过程中的繁琐操作,提高了开发效率。iBatis 的核心功能包括 SQL 映射、动态 SQL...
注意,iBatis还支持动态SQL,这意味着你可以在XML配置文件中使用`<if>`、`<choose>`、`<when>`等标签来根据条件动态构建SQL语句,这对于复杂的连接查询非常有用。 总的来说,iBatis提供了强大的SQL定制能力,使得...
通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构。 例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段...
### 解决IBatis缓存动态字段问题 #### 背景与问题描述 在使用IBatis框架处理数据库操作时,可能会遇到动态数据表名、动态字段名的情况。这种情况下,由于IBatis的缓存机制,可能导致字段找不到的问题。具体表现为...
根据提供的文档信息,我们可以深入探讨Ibatis框架中的一个具体应用场景:如何通过动态SQL查询特定条件下的ID列表。本文将从以下几个方面进行详细解析: ### 一、Ibatis简介 Ibatis是一个基于Java的持久层框架,它...
动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...
Source Database : ibatis_db Target Server Type : MYSQL Target Server Version : 50022 File Encoding : 65001 Date: 2013-05-02 22:49:28 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- --...