SqlMapCient 类提供了执行所有 mapped statement 的 API。这些方法如下:

 1 public int insert(String statementName, Object parameterObject)
 2 throws SQLException
 3
 4
 5
 6
 7 public int update(String statementName, Object parameterObject)
 8 throws SQLException
 9
10
11 public int delete(String statementName, Object parameterObject)
12 throws SQLException
13
14
15 public Object queryForObject(String statementName, Object parameterObject)
16 throws SQLException
17
18 public Object queryForObject(String statementName, Object parameterObject, Object resultObject) throws SQLException
19
20
21 public List queryForList(String statementName, Object parameterObject)
22 throws SQLException
23
24
25 public List queryForList(String statementName, Object parameterObject, int skipResults, int maxResults)
26 throws SQLException
27
28
29 public List queryForList (String statementName,
30
31 Object parameterObject, RowHandler rowHandler)
32
33 throws SQLException
34
35
36 public PaginatedList queryForPaginatedList(String statementName, Object parameterObject, int pageSize)
37 throws SQLException
38
39
40 public Map queryForMap (String statementName, Object parameterObject, String keyProperty)
41 throws SQLException
42
43
44 public Map queryForMap (String statementName, Object parameterObject, String keyProperty, String valueProperty)
45 throws SQLException

在上面的每个方法中,Mapped  Statement  的名称作为第一个参数。这个名称要对应<statement>的名称属性。另外,第二个参数总是参数对象。如果不需要参数对象,可以为

null。除了这些之外,上面的方法就没有相同的了。下面简单地介绍一下它们的不同之处。

* insert( ),update( ),delete( )

这些方法用于数据更新(即非查询语句)。这就是说,使用下面的查询方法来执行数据更新操作并不是不可能。但这显得很奇怪,并明显依赖于 JDBC 的驱动程序。执行 update(), 返回受影响数据记录的数目。

* queryForObject( )

queryForObject()方法有两个版本。一个返回查询得到的新对象,另一个用一个事先生成 的对象作为参数。后者对于使用多个查询为对象赋值很有用。

* queryForList( )

queryForList()方法也有三个版本。第一个执行一个查询并返回所有的查询结果。第二个 允许指定跳过结果的数目(即开始点)和返回结果的最大数目。对于查询一个数量很大的结 果集,并且不想返回所有的数据时很有用。最后一个版本的 queryForList()方法需要一个行处理器(row handler)作为输入参数。这 个方法可以让您使用结果对象,而不是数据表的行和列来逐行地处理查询结果集。这个方法 的参数除了例行的名称和参数对象外,还包括了一个实现了 RowHandler 接口的类的实例。 RowHandler 接口只有一个方法:

public void handleRow (Object object, List list);对于每一行从数据库中返回的数据,RowHandler 接口的方法都会被执行。这种处理数 据的方法,简洁而具有扩展性。

* queryForPaginatedList( )

对于要返回一个可以向前和向后翻页的数据子集,queryForPaginatedList()方法很有用, 它返回一个可管理的 List  对象。通常用于只显示一部分查询结果的用户界面。一个常见的 例子是,搜索引擎找到了 10000 条结果,但每次只显示其中的 100 条。PaginatedList 接口包 含了向前和向后翻页的方法(nextPage(),previousPage(),gotoPage()),并提供了检查翻页 状态的方 法( isFirstPage() , isMiddlePage() , isLastPage() , isPreviousPageAvailable() , getPageIndex(),getPageSize())。虽然不能从 PaginatedList 接口得到查询结果集的总数,但 这个总数可以再执行一个简单的语句 count()来得到。否则,PaginatedList 接口会大大的降低 性能。

* queryForMap( )

queryForMap()方法将结果集放在一个Map 对象中,这个 Map 对象用一个传入参数 keyProperty 作为 key 值。例如,要读入一批 Employee 对象,您可以将这些 Employee 对象放在一个用 employeeNumber 属性作为 key 值 的 Map 对象中。Map 对象的值可以是整个 Employee 对象,也可以是 Employee 对象的另一 个属性,属性的名称由第二个参数 valueProperty 指定。例如,您可能只是需要一个 Map 对 象,用员工号作为 key 值,员工姓名作为 value 值。不要把它和用 Map 作为结果对象的概念 混淆。这个方法可以使用 Java Bean 和 Map(或基本类型的包装类,但不可能这样用)作为 结果对象。

代码实例:

例子1:执行update(insert,update,delete)

1 sqlMap.startTransaction();
2 Product product = new Product(); product.setId (1); product.setDescription (“Shih Tzu”);
3 int rows = sqlMap.insert (“insertProduct”, product);
4 sqlMap.commitTransaction(); 

例子2:查询成对象(select)

1 sqlMap.startTransaction();
2 Integer key = new Integer (1);
3 Product product = (Product)sqlMap.queryForObject (“getProduct”, key); sqlMap.commitTransaction(); 

例子3:用预赋值的结果对象查询成对象(select)

1 sqlMap.startTransaction();
2 Customer customer = new Customer(); sqlMap.queryForObject(“getCust”, parameterObject, customer);   sqlMap.queryForObject(“getAddr”, parameterObject, customer); sqlMap.commitTransaction(); 

例子4:查询成对象List(select)

1 sqlMap.startTransaction();
2 List list = sqlMap.queryForList (“getProductList”, null);
3 sqlMap.commitTransaction();

例子5:用结果集边界查询成对象List(select)

1 sqlMap.startTransaction();
2 List list = sqlMap.queryForList (“getProductList”, null, 0, 40); sqlMap.commitTransaction();

例子6:用RowHandler执行查询(select)

 1 public class MyRowHandler implements RowHandler {
 2 public void handleRow (Object object, List list) throws SQLException { Product product = (Product) object;
 3 product.setQuantity (10000);
 4 sqlMap.update (“updateProduct”, product);
 5 // Optionally you could add the result object to the list.
 6 // The list is returned from the queryForList() method.
 7 }
 8 }
 9 sqlMap.startTransaction();
10 RowHandler rowHandler = new MyRowHandler();
11 List list = sqlMap.queryForList (“getProductList”, null, rowHandler);
12 sqlMap.commitTransaction(); 

例子7:查询成Paginated List(select)

1 PaginatedList list =
2 sqlMap.queryForPaginatedList (“getProductList”, null, 10);
3 list.nextPage(); list.previousPage(); 

例子9:查询成Map(select)

1 sqlMap.startTransaction();
2 Map map = sqlMap.queryForMap (“getProductList”, null, “productCode”);
3 sqlMap.commitTransaction();
4 Product p = (Product) map.get(“EST-93”);

注意:自动提交,当没调用 startTransaction 的情况下,statements 会自动提交。没必要 commit/rollback。

Ibatis学习总结7--SqlMapClient 执行 SQL 语句相关推荐

  1. Access学习要点2----Access2010中如何运行SQL执行SQL语句

    1.打开一个Access数据库文件 2.点击"创建"标签中的"查询设计",会弹出一个"显示表"的对话框,点击"关闭"将其 ...

  2. golang 执行sql语句_Go语言学习笔记(Golang操作MySQL数据库)

    GO连接MySQL 通过GO页面作为客户端访问数据库 1.因为GO语言没有提供任何官方数据库驱动,所以需要安装第三方函数库. 2.由于在github上安装,所以需要安装git软件,安装过程一直点击下一 ...

  3. 帝国cms php sql,帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

    帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 例1:连接MYSQL数据库例子.(a.php) db_close(); //关闭MYSQL链接$empire=null; //注消操作类变量? ...

  4. 云服务器怎么执行sql文件在哪里,总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例...

    总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例 发布时间:2020-10-19 14:58:08 来源:亿速云 阅读:83 作者:小新 这篇文章将为大家详细讲解有关总结帝国CMS下在 ...

  5. php 获取最后执行的sql,如何获取ThinkPHP框架最后一次执行SQL语句及变量调试

    这篇文章主要介绍了ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作,结合实例形式分析了thinkPHP获取最后一次执行SQL语句的getLastSql()及fetchSql()函数以及 ...

  6. mybatis直接执行sql语句后续之一

    在上一篇文章中,我们提到了让mybatis直接执行sql语句. http://xiabin1235910-qq-com.iteye.com/blog/1748886 接下来介绍在上一篇文章的基础上,我 ...

  7. django mysql sql语句_Django笔记:连接数据库并执行SQL语句

    Django中安装好数据库和对应的数据库驱动之后,就可以直接执行SQL语句进行数据库和表的创建,以及数据的增删改查等操作,在Python3中,可以使用的数据库和驱动有多种,我这里使用的是MySQL数据 ...

  8. 个人永久性免费-Excel催化剂功能第21波-Excel与Sqlserver零门槛交互-执行SQL语句篇...

    在前两波中,已完成了Excel与Sqlserver的查询和上传功能,但难免许多临时的或更深入地操作数据库需要用Sql语句来操作,对一般用户电脑里,不可能有条件轻易安装一个数据库客户端软件,就算安装了对 ...

  9. db_connection.execute(sql_str, *args)执行sql语句

    在学习sqlchemy的时候遇到db_connection.execute(sql_str, *args),不太理解这个不定参数怎么传入的,查询得知: 在db_connection.execute(s ...

  10. 易语言执行mysql命令行_易语言教程之MySQL[3]执行SQL语句

    连接MySQL服务器后,接着就可以做点实际的操作了,比如读取记录,插入记录,修改记录等.操作MySQL有2种方法,本集讲的是第一种,适合懂MySQL语句的人,方便,学习成本低,效率高.但不懂MySQL ...

最新文章

  1. RabbitMQ入门(4)--路由
  2. 【复盘】升级打怪第一关,冲啊!
  3. python计算结果传给spark_将Python函数作为对象传递给Spark
  4. 线程的堆栈——Windows核心编程学习手札之十六
  5. AndroidStudio部署项目时出现错误:Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
  6. Session会话技术
  7. twitter批量取消关注_如何在Twitter上取消阻止“潜在敏感内容”
  8. 信息学奥赛一本通 1063:最大跨度值 | OpenJudge NOI 1.5 06:整数序列的元素最大跨度值
  9. android 线程那点事
  10. 关于A+B+C问题4种语言的解决办法,Java、C语言、C++、Python
  11. 小型 web 服务器系统,小型WEB服务器 - 应用服务器是什么_应用服务器有哪些
  12. ESP8266 WIFI模块使用说明
  13. 怀念《100部经典动漫大回顾》 你还记得几部?(附图)
  14. Error starting userland proxy: listen tcp 0.0.0.0:xxx端口: bind: address already in use解决办法
  15. routeros dns_从RouterOS在FreeDNS上进行动态DNS更新
  16. tf.keras.metrics.Accuracy;tf.keras.metrics.Precision;tf.keras.metrics.Recall
  17. Storm之——搭建Storm集群
  18. 基于webmagic实现爬取博客园的所有精品文章
  19. 使用哪种关机方式后再启动计算机时间最长,使用下面哪种关机方式后再启动计算机时间最长?(  )。...
  20. 编译报错:error: ro.build.fingerprint cannot exceed 91 bytes

热门文章

  1. Spring Boot(一) 自动装配--约定大于配置
  2. Confluence 6 CSS 编辑快速入门
  3. JNI调用(github有代码可下载)
  4. Jquery 改变样式
  5. rand(),srand()产生随机数
  6. MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析
  7. 找到所有小于N的素数
  8. 杂谈:《宫锁心玉》的穿越硬伤
  9. 看了两篇园子里的文章,初步懂了点接口的涵义
  10. 结构体怎么赋值_Go 经典入门系列 16:结构体