Ibatis之3个不常用的Query方法
2016-05-09 13:59
344 查看
Ibatis之3个不常用的Query方法
2014-10-22 10:42 1324人阅读 评论(0) 收藏 举报分类:
java(40)
版权声明:本文为博主原创文章,未经博主允许不得转载。
1.queryForObject
[java] view
plain copy
/**
* Executes a mapped SQL SELECT statement that returns data to populate
* the supplied result object.
* <p/>
* The parameter object is generally used to supply the input
* data for the WHERE clause parameter(s) of the SELECT statement.
*
* @param id The name of the statement to execute.
* @param parameterObject The parameter object (e.g. JavaBean, Map, XML etc.).
* @param resultObject The result object instance that should be populated with result data.
* @return The single result object as supplied by the resultObject parameter, populated with the result set data,
* or null if no result was found
* @throws java.sql.SQLException If more than one result was found, or if any other error occurs.
*/
Object queryForObject(String id, Object parameterObject, Object resultObject) throws SQLException;
当查询对象是一个重量级对象、创建过程比较复杂时或者查询对象没有默认的构造方法时,通过该方法,可以在外部先构建好查询对象,然后传给Ibatis,Ibatis此时不会创建新对象,而是调用传入对象的set方法进行赋值。
2.queryForList
[java] view
plain copy
/**
* Executes a mapped SQL SELECT statement that returns data to populate
* a number of result objects within a certain range.
* <p/>
* This overload assumes no parameter is needed.
*
* @param id The name of the statement to execute.
* @param skip The number of results to ignore.
* @param max The maximum number of results to return.
* @return A List of result objects.
* @throws java.sql.SQLException If an error occurs.
*/
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
/**
* Executes a mapped SQL SELECT statement that returns data to populate
* a number of result objects that will be keyed into a Map.
* <p/>
* The parameter object is generally used to supply the input
* data for the WHERE clause parameter(s) of the SELECT statement.
*
* @param id The name of the statement to execute.
* @param parameterObject The parameter object (e.g. JavaBean, Map, XML etc.).
* @param keyProp The property to be used as the key in the Map.
* @return A Map keyed by keyProp with values being the result object instance.
* @throws java.sql.SQLException If an error occurs.
*/
Map queryForMap(String id, Object parameterObject, String keyProp) throws SQLException;
网上有不少帖子说这个方法只能返回一条记录是不对的,还有说是把resultClass的所有属性放到一个map中返回来也是不对的。这个方法是对queryForList的一个补充,大部分情况下我们用的都是queryForList返回对象的列表,但有时候放到Map里用起来可能更方便,如果没有这个方法还得自己进行转换,同样的一个<select ...>配置,不用做任何更改即可以用queryForList访问也可以用queryForMap访问。
相关文章推荐
- [BS-16] 尽量将View的Opaque属性设置为YES(默认就是YES)
- DruidParser - 源代码篇(1)
- requestAnimationFrame/cancelAnimationFrame——性能更好的js动画实现方式
- 【Arduino官方教程第一辑】示例程序 3-2 模拟信号输入
- gradle 项目依赖的包太多导致不能build的异常
- CoreThink主题开发(九)使用H-ui开发博客主题之用户个人主页
- jsp页面从session和request域中取数据小结
- Android 中的消息模型(Message,MessageQueue,handle,looper)
- Codeforces 670E - Correct Bracket Sequence Editor 链表
- 64-Unique Binary Search Trees
- Arcengine 开发,FeatureClass新增feature时“The Geometry has no z-value”或"The Geometry has null z-value"的解决方案
- MUI-页面初始化
- Ultra-QuickSort--POJ2299(归并排序求逆序数对)
- UIButton setBackgroundImage与setImage区别
- UITabBarController使用
- android 你所不知道的类SpannableStringBuilder的总结--实现图文混排,查看更多,下划线等等
- Moqui之时间转换
- words in view Moqui resource code
- 区分Integer.getInteger和Integer.valueOf、Integer.parseInt() 的使用方法
- TestSuite很多skipped,报错Exception org.openqa.selenium.SessionNotCreatedException