ibatis传入参数包含多个对象如何实现

天降扫把星 2013-05-06 04:17:32
rt,分页查询中 需要传递 查询的条件 和 分页的数据
...全文
349 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxiao1228 2013-05-09
  • 打赏
  • 举报
回复
把对象中的参数都放到map中
yyw6637 2013-05-07
  • 打赏
  • 举报
回复
引用 4 楼 hzau_chen 的回复:
好吧,先不说那个句子是真还是假分页 我要做的就是你说的后者使用的map 因为是查询分页,我需要带入查询条件(User对象),和两个参数(PageBean里的) map只支持参数,不支持对象吧 我试过,put对象,但到xml中取不到值。。。。 还有哦,我在查询之后需要返回条数 和 数据 这也是我纠结的。。。。
你干嘛非要带入两个对象?在dao层吧User和PageBean中用到的参数放到map里不就行了?需要的条数不就是list.size()吗
天降扫把星 2013-05-06
  • 打赏
  • 举报
回复
好吧,先不说那个句子是真还是假分页 我要做的就是你说的后者使用的map 因为是查询分页,我需要带入查询条件(User对象),和两个参数(PageBean里的) map只支持参数,不支持对象吧 我试过,put对象,但到xml中取不到值。。。。 还有哦,我在查询之后需要返回条数 和 数据 这也是我纠结的。。。。
yyw6637 2013-05-06
  • 打赏
  • 举报
回复
这查出的就是你需要的分页数据数据!!!!!你非要把参数带进去自己写的话也可以,放在一个pagebean里面或者map里面都可以,xml里面paramerclass就用www.ods.pagebean 或者java.util.Map
天降扫把星 2013-05-06
  • 打赏
  • 举报
回复
这个貌似是假查询,先把所有数据拿出来再分页 我想做的是在查询的时候就查出该显示的数据,(ibatis)在xml配置文件中parameterClass 不会处理 查到的都是多个参数的使用,不是对象的
yyw6637 2013-05-06
  • 打赏
  • 举报
回复
queryForList(sqlname,parameter,pageResult.getFirstRec(),pageResult.getPageSize());
ibatis 开发指南ibatis Quick Start............................................................................................ 5 准备工作.......................................................................................................... 5 构建ibatis 基础代码.................................................................................... 5 ibatis 配置........................................................................................................... 11 ibatis 基础语义...................................................................................................... 16 XmlSqlMapClientBuilder................................................................... 16 SqlMapClient ........................................................................................... 16 SqlMapClient 基本操作示例.......................................................... 16 OR 映射........................................................................................................... 19 ibatis 高级特性...................................................................................................... 26 数据关联........................................................................................................ 26 一对多关联............................................................................................ 26 一对一关联............................................................................................ 28 延迟加载........................................................................................................ 30 动态映射........................................................................................................ 31 事务管理........................................................................................................ 35 基于JDBC 的事务管理机制................................................................ 35 基于JTA 的事务管理机制................................................................... 36 外部事务管理......................................................................................... 38 Cache .............................................................................................................. 39 MEMORY 类型Cache 与WeakReference ........................................ 40 LRU 型Cache ....................................................................................... 42 FIFO 型Cache ...................................................................................... 43 OSCache................................................................................................. 43 ibatis 开发指南相对Hibernate 和Apache OJB 等“一站式”ORM 解决方案而言,ibatis 是一种“半自动化”的ORM 实现。所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM ,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate 或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握, Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。大多数情况下( 特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头。但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。在笔者的系统咨询工作过程中,常常遇到以下情况: 1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。2. 开发规范中要求, 所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现(就笔者工作所面向的金融行业而言,工商银行、中国银行、交通银行,都在开发规范中严格指定)3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL 语句(或存储过程)才能达到系统性能设计指标。面对这样的需求,再次举起Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏……,说得未免有些凄凉,直接使用JDBC 进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作令人厌烦。“半自动化”的ibatis,却刚好解决了这个问题。这里的“半自动化”,是相对Hibernate 等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO 与SQL 之间的映射关系。也就是说,ibatis 并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL 所需的参数,以及返回的结果字段映射到指定POJO 。使用ibatis 提供的ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的Java 对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate 等“全自动”ORM 机制而言,ibatis 以SQL 开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。ibatis Quick Start 准备工作1. 下载ibatis 软件包(http://www.ibatis.com)。2. 创建测试数据库,并在数据库中创建一个t_user 表,其中包含三个字段: . id(int) . name(varchar) . sex(int) 。3. 为了在开发过程更加直观,我们需要将ibatis 日志打开以便观察ibatis 运作的细节。ibatis 采用Apache common_logging,并结合Apache log4j 作为日志输出组件。在CLASSPATH 中新建log4j.properties 配置文件,内容如下:log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%c{1} -%m%n log4j.logger.java.sql.PreparedStatement=DEBUG 构建ibatis 基础代码ibatis 基础代码包括: 1. ibatis 实例配置一个典型的配置文件如下(具体配置项目的含义见后): iBATIS.com//DTD SQL Map Config 2.0//EN""http://www.ibatis.com/dtd/sql-map-config-2.dtd"> valuevalue"Pool.MaximumActiveConnections" "Pool.MaximumIdleConnections" "Pool.MaximumCheckoutTime" valuevaluevalue"Pool.PingConnectionsOlderThan" "Pool.PingConnectionsNotUsedFor" 2. POJO(Plain Ordinary Java Object) 下面是我们用作示例的一个POJO: public class User implements Serializable { private Integer id; private String name; private Integer sex; private Set addresses = new HashSet(); /** default constructor */public User() { } public Integer getId() {return this.id; } public void setId(Integer id) {this.id = id; } public String getName() {return this.name; } public void setName(String name) {this.name = name; } public Integer getSex() {return this.sex; } public void setSex(Integer sex) {this.sex = sex; } }3. 映射文件与Hibernate 不同。因为需要人工编写SQL 代码,ibatis 的映射文件一般采用手动编写(通过Copy/Paste,手工编写映射文件也并没想象中的麻烦)。针对上面POJO 的映射代码如下:iBATIS.com//DTD SQL Map 2.0//EN""http://www.ibatis.com/dtd/sql-map-2.dtd">