锁定老帖子 主题:在ibatis的入门例子中就被卡住了
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-07-12
近来开始学习ibatis,好不容易找了些入门资料,却没想到ibatis的第一个例子上就卡住,先是从ibatis官方下的petstore5在resin-pro-3.0.22上运行不起来。 然后就是《ibatis开发指南》(夏昕: xiaxin(at)gmail.com)的第一个例子,代码照着敲进来,也不见能起来。 然后在JE上找到了这个 http://www.iteye.com/post/148076 (温柔一刀) 这个还不是很坏,能运行,然而getAllUser读出来的记录数总是0,而数据库是有数据的。 这个User.xml中查询的配置代码: xml 代码
java代码段如下: java 代码
测试了几次取不到结果。开始找原因, 先是把 java 代码
中的参数null改成user2(新创建的一个User对象,其他setName("数据库中已存在字段值")),可以取到那条记录。 可以这里有个小问题,放后面说!!!!!!
第二种尝试,把User.xml中ID为getAllUser的SQL改成查询所有记录,这样可以取到所以的记录。 xml 代码
上面只有条件“WHERE name=#name#”给去掉了。 到了这里,我想,问题是不是出在SQL上?一开始JAVA那边传递过来的参数是null,而ibatis最终生成的SQL还是 “select name, sex from t_user WHERE name=null” ? 不过,以前在JE上无意中看到有文章说IBATIS可以做到自动取舍WHERE子句的,难道是记错了,百度,结果出来了,要做到动态取舍WHERE子句,User.xml中有关SQL的配置应该是这样: xml 代码
这里特殊(模糊查询)了一点,如果是精切查询,是#而不是$符号了。
=== 说说那个小问题: 如果 User.xml的getAllUser的配置是: xml 代码
那么 java 代码
java 代码
这两个都可以正常取到那条记录。 如果User.xml是: xml 代码
,只能传递User对象作为参数了, java 代码
否则报错: xml 代码
刚接触ibatis,有说错的地方恳请指正. MySQL是4.1.22版本。 JDK1.6.0_02。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-07-13
唉,不用那么麻烦,,是什么原因,是你的SQL语句写的有要传入一个参数,但你没有传入。<select id="getAllUser" resultClass="user>
你这里应该还要加一句 。<select id="getAllUser" resultClass="user parameterClass="java.lang.String">,,这里是说。你要出入一个String类型的参数,然后你user=sqlMap.queryForList("getAllUser", null); 你这里的user是什么类型的,queryForList这里查询出来的是LIST类型的,还有如果要传参数,你这里的null就要改为那个参数值,,其他,没注意看,如果还有什么问题,自己在找找。 |
|
返回顶楼 | |
发表时间:2007-09-27
这个问题,我也遇到过,用java.lang.String作为动态查询的条件,时不能直接传入java.lang.String.
需要用HashMap封装一下。就可以了。 HashMap<String, String> map=new HashMap<String, String>(); map.put("id",id); parameterClass="java.util.HashMap" |
|
返回顶楼 | |
浏览 4764 次