Ibatis之3个不常用的Query方法

来源:互联网 发布:ps中文字体下载mac版 编辑:程序博客网 时间:2024/06/18 03:47
 

Ibatis之3个不常用的Query方法

 1324人阅读 评论(0) 收藏 举报
 分类:
 

1.queryForObject

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * Executes a mapped SQL SELECT statement that returns data to populate 
  3.  * the supplied result object. 
  4.  * <p/> 
  5.  * The parameter object is generally used to supply the input 
  6.  * data for the WHERE clause parameter(s) of the SELECT statement. 
  7.  * 
  8.  * @param id              The name of the statement to execute. 
  9.  * @param parameterObject The parameter object (e.g. JavaBean, Map, XML etc.). 
  10.  * @param resultObject    The result object instance that should be populated with result data. 
  11.  * @return The single result object as supplied by the resultObject parameter, populated with the result set data, 
  12.  *         or null if no result was found 
  13.  * @throws java.sql.SQLException If more than one result was found, or if any other error occurs. 
  14.  */  
  15. Object queryForObject(String id, Object parameterObject, Object resultObject) throws SQLException;  

当查询对象是一个重量级对象、创建过程比较复杂时或者查询对象没有默认的构造方法时,通过该方法,可以在外部先构建好查询对象,然后传给Ibatis,Ibatis此时不会创建新对象,而是调用传入对象的set方法进行赋值。

2.queryForList

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * Executes a mapped SQL SELECT statement that returns data to populate 
  3.  * a number of result objects within a certain range. 
  4.  * <p/> 
  5.  * This overload assumes no parameter is needed. 
  6.  * 
  7.  * @param id              The name of the statement to execute. 
  8.  * @param skip            The number of results to ignore. 
  9.  * @param max             The maximum number of results to return. 
  10.  * @return A List of result objects. 
  11.  * @throws java.sql.SQLException If an error occurs. 
  12.  */  
  13. List queryForList(String id, int skip, int max) throws SQLException;  

利用这个方法可以实现分页功能,如(skip=0,max=10)返回前10条数据,(skip=10,max=10)返回第10-20条数据,但这个方法的分页效率非常低,因为Ibatis是把所有的查询结果查询出来之后才进行筛选操作。数据量小的时候用用还可以,所以这个方法比较鸡肋。

3.queryForMap

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. /** 
  2.    * Executes a mapped SQL SELECT statement that returns data to populate 
  3.    * a number of result objects that will be keyed into a Map. 
  4.    * <p/> 
  5.    * The parameter object is generally used to supply the input 
  6.    * data for the WHERE clause parameter(s) of the SELECT statement. 
  7.    * 
  8.    * @param id              The name of the statement to execute. 
  9.    * @param parameterObject The parameter object (e.g. JavaBean, Map, XML etc.). 
  10.    * @param keyProp         The property to be used as the key in the Map. 
  11.    * @return A Map keyed by keyProp with values being the result object instance. 
  12.    * @throws java.sql.SQLException If an error occurs. 
  13.    */  
  14.   Map queryForMap(String id, Object parameterObject, String keyProp) throws SQLException;  

网上有不少帖子说这个方法只能返回一条记录是不对的,还有说是把resultClass的所有属性放到一个map中返回来也是不对的。这个方法是对queryForList的一个补充,大部分情况下我们用的都是queryForList返回对象的列表,但有时候放到Map里用起来可能更方便,如果没有这个方法还得自己进行转换,同样的一个<select ...>配置,不用做任何更改即可以用queryForList访问也可以用queryForMap访问。

0 0
原创粉丝点击