`
kevin850115
  • 浏览: 64840 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ibaits 多参数

阅读更多
在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实现增删改查功能demo

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

    iBATIS实战

    本书是讲述iBATIS框架的权威著作。书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例...

    ibatis使用总结

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

    iBatis SQL Maps开发指南.pdf

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

    maven3+struts2+spring+ibatis

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

    ibatisDemo

    mysql数据库,ibatisDemo,包含单表操作的增删改查,模糊查询,多参数查询单表

    ibatis 开发指南(pdf)

    26 一对多关联............................................................................................ 26 一对一关联...........................................................................

    ibatis 学习资料

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

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

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

    iBATIS 帮助文档

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

    SQL参数自动填充工具

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

    Hitis V1.2.2

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.2.1

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.1.1

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    Hitis V1.2

    (1)在ibatis中,不能取得实际执行的sql,也不能取得实际执行的sql所需要的参数数组,而Hitis可以 (2)在ibaits中,不能在逻辑节点写入像"大于号"这样的特殊字符,因为,它是基于xml的,而Hitis可以,Hitis很像html,...

    MyBatis自动生成java文件

    这是一个简单的demo 包括jar包和demo工程,导入eclipse即可,工程需要修改配置参数,运行main方法即可。 MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,...

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

    编写多表查询,多表字段排序的存储过程. 馆员登记各层代码 馆员权限设置 将菜单表移至公共数据库LIBPUBCL ================================================================================================...

    springmybatis

    而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此...

    mybatis增删改查实例

    java mybatis实现的增删改查实例,包含表关系如一对一,一对多,多对多的sql标签结果集写法,常见的多参数传参方法等。

Global site tag (gtag.js) - Google Analytics