借光问一下楼主:
map2 = (Map)sqlmap.queryForMap("selectUser",map1,第三个参数);
这第三个参数写什么呀???
还有:
<select id="selectUser" resultClass="java.util.Map" parameterClass = "java.util.Map">//问一下:这个resultClass,和parameterClass这样写不行啊???
//我在上面配过parameterMap 和 resultMap,但还是不行。
select * from t_user 
<dynamic prepend="where">
<isPropertyAvailable property="id" prepend="and">
    t_user.id=#id:INT#
</isPropertyAvailable>
</dynamic> ORDER BY id DESC
</select>

解决方案 »

  1.   

    文档有说明:
    “queryForMap()方法将结果集放在一个Map对象中,这个Map对象用一个传入参数keyProperty作为key值。例如,要读入一批Employee对象,您可以将这些Employee对象放在一个用employeeNumber属性作为key值的Map对象中。Map对象的值可以是整个Employee对象,也可以是Employee对象的另一个属性,属性的名称由第二个参数valueProperty指定。例如,您可能只是需要一个Map对象,用员工号作为key值,员工姓名作为value值。不要把它和用Map作为结果对象的概念混淆。这个方法可以使用Java Bean和Map(或基本类型的包装类,但不可能这样用)作为结果对象。”
      

  2.   

    再确认一下,log4j和ibatis集成以后log4j打印的ibatis相关信息应该是ibatis内部输出的。此时不一定是查询数据库了。我的log4j刚发彪完。最简单的验证办法是直接打印你的DAO对象(此时打印的是DAO对象的内存地址),你会发现凡是调用过的DAO对象地址都一样,这就是缓存。
      

  3.   

    缓存模式的属性标签应该是:<property name="cacheSize" value="100"/>
      

  4.   

    <property name="size" value="100"/>没有错,是官方jpetstore例子里面的:)“log4j和ibatis集成以后log4j打印的ibatis相关信息应该是ibatis内部输出的”,没错,但应该就是debug实际运行状况吧,那有什么办法查询是否查询数据库?
      

  5.   

    如何
    “最简单的验证办法是直接打印你的DAO对象(此时打印的是DAO对象的内存地址),你会发现凡是调用过的DAO对象地址都一样,这就是缓存。”?可以设定log4j实现吗?log4j用的比较少,不知道怎么样设置
      

  6.   

    楼主:config中加入:
    <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true"></settings>