`
PlayGod1984
  • 浏览: 158235 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

【转】ibatis 多个参数的查询

阅读更多
转载自:http://yhjhappy234.blog.163.com/blog/static/31632832200982785927250/
作者:一线天色
作者博客:http://yhjhappy234.blog.163.com/

ibatis输入多个参数软件开发 2009-09-27 08:59:27 阅读365 评论2 字号:大中小
在ibatis中,会发现其输入参数只能有一个,于是当出现需要进行多个输入参数的时候,就要想点办法了,我看到的有以下两种比较好的方法能够解决这个问题
1) 用String代替
<select id="checkLogin" parameterClass="java.lang.String" resultClass="java.lang.Integer">
SELECT count(*) AS value FROM userinfo WHERE $sql$
</select>
比如如上的map statement代码中,将输入的参数设置为String类型,而在select语句中直接使用该String,于是用户可以在Java程序代码中手工植入需要匹配的参数。

String sql = "uid = '" + username + "' and pwd='" + password + "'";
Integer r = (Integer) sqlMap.queryForObject("checkLogin", sql);

这个方法很简单,但是弊端也很多。首先得需要用户自己手动写sql语句代码在java中,这与ibatis的本质要将数据层的操作和业务逻辑操作分隔开来是违背的。其次,这个办法可能会被利用造成sql injection的问题。比如在sql语句的最后加上一句;drop some table。这样的结果显而易见,就是灾难性的。

2)用 Map
<select id="checkLogin2" parameterClass="java.util.Map" resultClass="java.lang.Integer">
SELECT count(*) AS value FROM userinfo WHERE uid=#uid# and pwd=#pwd#
</select>

这种办法显得要清楚的很多,也不需要自己手动编写sql到java之中。
Map map=new HashMap();
map.put("uid", username);
map.put("pwd", password);
Integer r = (Integer) sqlMap.queryForObject("checkLogin2", map);

在java中首先生成需要的map,然后作为输入参数传入即可。这个方法应该是比较好的,值得推荐。

3)也有人采用根据需要编写javaBean的方法,但是这个方法的弊病在于如果你的逻辑操作涉及到很多的不同的属性的组合,你就会浪费很多资源去生成各种各样的bean。
分享到:
评论

相关推荐

    ibatis的多参数查询.doc

    ibatis的多参数查询.doc

    iBatis SQL Maps开发指南.pdf

    组合键值或多个复杂参数属性 支持Parameter Map和Result Map的数据类型 缓存Mapped Statement结果集 只读 VS 可读写 Serializable可读写缓存 缓存类型 动态Mapped Statement 二元条件元素 一元条件元素 其他元素 ...

    ibatis使用总结

    ibatis使用过程中的总结,有助于新手快速使用ibatis应用到自己的项目中

    iBATIS实战

    1.4.2 被多个分散的系统访问 21 1.4.3 复杂的键和关系 21 1.4.4 数据模型的去规范化或过度规范化 22 1.4.5 瘦数据模型 23 1.5 小结 24 第2章 iBATIS是什么 26 2.1 映射SQL语句 27 2.2 iBATIS如何工作 29 2.2.1 ...

    ibatis实现增删改查功能demo

    一个ibatis实现增删改查功能demo。里面实现的增删改查,而且解决了ibatis不能多参数传递的缺点。可以实现多参数传递。

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    ibatis 学习资料

    ibatis 对但张表的CRUD 双向一对一 双向一对多 双向 多对多 及 多个参数的传递

    ibatis 开发指南(pdf)

    “半自动化”的ibatis,却刚好解决了这个问题。 这里的“半自动化”,是相对Hibernate 等提供了全面的数据库封装机制的“全自动化” ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及...

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    虽然ibatai sql map可以配置多个参数,但sqlMap只能传入一个参数,我们有两种方式,一是把我们的参数封装成一个类,通过set/get取值的方式给sql map注入参数,二是通过hashMap(可以组合一些不是同一个pojo的参数有...

    SQL参数自动填充工具

    测试抓取ibatis日志生成的sql会有很多问号,参数填充太麻烦,所以写了一个窗口sql参数自动填充工具

    iBATIS 帮助文档

    SQL Maps (com.ibatis.sqlmap.*)......................................................................................................5 SQL Map的概念........................................................

    MyBatis自动生成java文件

    他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象。 这样和数据库表进行交互时不需要创建对象和配置文件。 MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除...

    springmybatis

    查询出列表,也就是返回list, 在我们这个例子中也就是 List&lt;User&gt; , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的 ...

    Hitis V1.2.2

    (1)在ibatis中,不能取得实际...(7)在ibatis中,会依赖这样那样的jar包,虽然不多,但总有几个吧,但Hitis,不依赖任何第三方jar包 (8)在Hitis中,...,你不心动吗?不想试用一下吗?试试用吧,永久开源的,放心用吧...

    通用管理框架正式版1.1源码

    用户管理: 管理系统用户信息,并可以定义用户所属的角色,部门,岗位,一个用户可以选择多个角色 部门管理: 管理系统部门信息 岗位管理: 管理系统岗位 在线用户: 查看当前登录系统的用户 参考界面: 代码生成器: ...

    Hitis V1.2.1

    (7)在ibatis中,会依赖这样那样的jar包,虽然不多,但总有几个吧,但Hitis,不依赖任何第三方jar包 (8)在Hitis中,...,你不心动吗?不想试用一下吗?试试用吧,永久开源的,放心用吧... New Features In Hitis V...

    Hitis V1.1.1

    (7)在ibatis中,会依赖这样那样的jar包,虽然不多,但总有几个吧,但Hitis,不依赖任何第三方jar包 (8)在Hitis中,...,你不心动吗?不想试用一下吗?试试用吧,永久开源的,放心用吧... New Features In Hitis V...

    AppFramework_V1.0

    &lt;br&gt;IBatisNet是一个轻量级ORMap工具,它把所有的SQL脚本以模板的方式集中到若干个XML配置文件里,用反射的方式向把C#类实体对象属性与SQL模板的参数绑定,动态生成参数化的SQL语句发送给数据库执行,查询的结果...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    Mybatis Mapper.xml中字符串形式传参,逗号分隔 AND中拼接OR。

    Hitis V1.2

    (7)在ibatis中,会依赖这样那样的jar包,虽然不多,但总有几个吧,但Hitis,不依赖任何第三方jar包 (8)在Hitis中,...,你不心动吗?不想试用一下吗?试试用吧,永久开源的,放心用吧... New Features In Hitis V...

Global site tag (gtag.js) - Google Analytics