Ibatis之3个不经常使用的Query方法
方法 Query 经常 ibatis 使用
2023-09-14 09:08:01 时间
1.queryForObject
/** * 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
/** * 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
/** * 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訪问。
相关文章
- Ubuntu远程连接MySQL(connection refused)解决方法
- 查询改写(Query Rewrite)方法总结
- asp.net url址址中中文汉字参数传递乱码解决方法
- 数据缺失值的4种处理方法
- 细谈 oracle备份的方法
- Sublime Text 使用方法
- EasyDSS RTMP流媒体服务器的HTTP接口query url的C++实现方法
- DataReader转DataSet方法
- ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍
- [转载] 为Visual Studio添加默认INCLUDE包含路径的方法
- vuejs路由传参的多种方法总结
- JavaScript数组的常用方法总结:遍历,复制,反转,排序,添加,删除(前端常见面试题必考必问)实例演示
- 总结下利用python赚钱的方法,在闲余时间月赚2k-5k
- TF之AutoML之AdaNet框架:AdaNet框架的简介、特点、使用方法详细攻略
- Py之SnowNLP:SnowNLP中文处理包的简介、安装、使用方法、代码实现之详细攻略
- CopyFile 使用方法
- Win11系统软件提示端口被占用无法使用解决方法
- Day 12 - 标签图片的方法与实作
- SQL Sever — 导入数据与导出数据到表的方法