`
noasoso
  • 浏览: 35979 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

ibatis 简单示例

 
阅读更多

 

㈠ 加载iBatis 配置文件与映射文件:

加载配置文件:
① String resource = "sqlMapConfig.xml";
     Reader reader = Resources.getResourceAsReader(reader); 
     SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(reader);

② String resource = "sqlMapConfig.properties";
     Properties props = Resources.getResourceAsProperties(resource);
     SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(props);

③ String resource = "sqlMapConfig.xml";
     Stream stream = Resources.getResourceAsStream(resource);
     SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(stream);

④ String resource = "sqlMapConfig.xml";
     File file = Resources.getResourceAsFile(resource);
     SqlMapClient sqlMapClient = SqlMapClientBuilder.buildSqlMap(file);

㈡ 数据更新:
插入:public int insert(String statementName,Object parameterObject) throws SQLException.
更新:public int update(String statementName,Object parameterObject) throws SQLException.
删除:public int delete(String statementName,Object parameterObject) throws SQLException.

例:sqlMapClient.startTransaction();
       User user = new User();
       user.setId(100);
       user.setUsername("joe");
       user.setPassword("123");
       user.setEmail("joe@163.com");
       int rows = sqlMapClient.insert("users.insertUser",user);//users映射文件namespace值,insertUser映射文件insert的id值
       sqlMapClient.commitTransaction();

㈢ 数据查询:
① 查询结果返回一个对象
public Object queryForObject(String statementName,Object parameterObject) throws SQLException.
public Object queryForObject(String statementName,Object parameterObject,Object resultObject) throws SQLException
例:sqlMapClient.startTransaction();
       Integer id = new Integer(100);
       User user = (User)sqlMapClient.queryForObject("users.getUser",id);
       sqlMapClient.commitTransaction();
② 查询结果放入List中
public List queryForList(String statementName,Object parameterObject) throws SQLException.
public List queryForList(String statementName,Object parameterObject,int skipResults,int maxResults) throws SQLException.
public List queryForList(String statementName,Object parameterObject,RowHandler rowHandler) throws SQLException.
例:sqlMapClient.startTransaction();
       List list = sqlMapClient.queryForList("users.getUserList",null);
       sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
       List list = sqlMapClient.queryForList("users.getUserList",null,0,40);
       sqlMapList.commitTransaction();
例:sqlMapClient.startTransaction();
       Rowhandler rowhandler = new MyRowHandler();
       List list = sqlMapClient.queryForList("users.getUserList",null,rowhandler );
       sqlMapList.commitTransaction();
       public class MyRowHandler implements RowHandler{
             public void handlerRow(Object obj,List list) throws SQLException{
                      User user = (User)obj;
                      user.setPassword("123");
                      sqlMapClient.update("users.updateUser",user);
            }
      }
③ 分页查询
public PaginatedList queryForPaginatedList(String statementName,Object parameterObject,int pageSize) throws SQLException.
例:PaginatedList list = sqlMapClient.queryForPaginatedList("users.getUserList",null,10);
       list.nextPage();   //下一页
       list.previous();   //前一页
       list.isFirstPage();  //是否是首页
       list.isMiddlePage(); //是否是中间页
       list.isLastPage();   //是否是最后一页
       list.isPreviousPageAvaliable();  //是否有前一页
       list.getPageIndex();  //获得当前页码
       list.getPageSize();   //获得页面大小。
④ 查询结果放入Map中
public Map queryForMap(String statementName,Object parameterObject,String keyPropertythorws SQLException.
public Map queryForMap(String statementName,Object parameterObject,String keyProperty,String valuePropertythorwsSQLException.
例:sqlMapClient.startTransaction();
       Map map = sqlMapClient.queryForMap("users.getUserList",null,"id");
       sqlMapClient.commitTransaction();
        User user = (User)map.get(100);
⑤ 批量处理(insert/update/delete)
sqlMapClient.startBatch();
  //...execute statements
sqlMapClient.executeBatch();

事务管理
public void 
startTransaction() throws SQLException  //开始事务
public void commitTransaction() throws SQLException  //提交事务
public void rollbackTransaction() throws SQLException  //回滚事务
public void endTransaction() throws SQLException  //结束事务
:对每个SqlMapClient实例,一个线程最多只能打开一个事务。

使用自动事务
如果没有使用startTransaction()、commitTransaction()、rollbackTransaction()方法明确地划分事务范围,事务将自动执行。不建议使用。
使用全局事务
全局事务也叫分布式事务,它可以允许在同一事务中更新多个数据库,即同时成功或失败。全局事务即可以手工管理,也可以有框架来管理。
使用手工来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为EXTERNAL
使用框架来管理全局事务,必须在配置文件中设定<transactionManager>的type的属性值设为JTA
例:try{
            sqlMapClient.startTransaction();
            sqlMapClient0.startTransaction();
            sqlMapClient.insert(...);
            sqlMapClient0.update(...);
            sqlMapClient0.commitTransaction();
            sqlMapClient.commitTransaction();
       }finally{
                try{
                         sqlMapClient0.endTransaction();
                }finally{
                         sqlMapClient.endTransaction();
                }
       }

 

分享到:
评论

相关推荐

    Ibatis的 简单示例

    通过这个简单的示例,我们可以了解到iBATIS如何配置数据源、设置行为以及定义SQL映射。在实际项目中,可以根据需求进行更复杂的配置,如使用连接池、配置缓存策略、处理复杂查询等。同时,iBATIS还支持动态SQL,使得...

    iBatis经典示例

    这个"iBatis经典示例"包含了该框架的核心功能演示,包括基本的增删改查操作,以及参数映射的内外部实现,是学习和理解iBatis功能的绝佳材料。 首先,我们来看增删改查(CRUD)操作。在数据库编程中,这四类操作是最...

    一个用ibatis框架开发的示例项目

    Ibatis,作为一个轻量级的Java持久层框架,因其简单易用、灵活性高而备受开发者喜爱。在这个示例项目中,我们将探讨Ibatis的核心概念,包括SQL映射文件、动态SQL、事务管理以及如何将Ibatis与Spring框架整合,以实现...

    ibatis3.0示例

    iBatis 3.0引入了Executor执行器,包括SimpleExecutor、ReuseExecutor和BatchExecutor,分别对应简单执行、重用Statement和批量操作,提供了不同的性能优化策略。 6. **缓存机制** iBatis支持本地缓存和二级缓存...

    ibatis开发资料及简单示例

    本资料包"ibatis开发资料及简单示例"显然是为了帮助开发者快速入门和理解Ibatis的工作原理和使用方法。其中包含的JAR包可能是Ibatis的核心库和其他相关依赖,这些库文件是运行Ibatis项目所必需的。 首先,我们来...

    ibatis-2.3.4.726

    3. **simple_example** - 这可能是一个包含 iBATIS 简单示例代码的目录,帮助开发者了解如何快速上手使用 iBATIS。 4. **jar-dependencies.txt** - 这个文件很可能列出 iBATIS 2.3.4.726 所需的外部 JAR 文件依赖,...

    IBatis框架简单例子

    自己写的ibatis例子,可以用来入门,也可以学习一下配置文件的配置方法,程序中对可以Student表进行增删改查,自己也可以根据需要添加新的方法,里面有源码和数据库脚本。有需要的,可以下过来看看。

    struts2+spring+ibatis整合示例

    在"Struts2+spring+ibatis简单整合示例"中,主要涉及以下步骤: 1. **配置环境**:首先确保你的开发环境中已经安装了JDK、Tomcat、Maven或Gradle等必要工具,并且配置了相应的环境变量。 2. **创建项目**:创建一...

    使用的iBatis 简单例子

    在这个“使用的iBatis简单例子”中,我们将深入探讨如何配置和使用iBatis进行数据库交互。 首先,iBatis的核心组件包括XML配置文件、SQL映射文件以及SqlSessionFactory。XML配置文件用于定义数据源、事务管理器等...

    ibatis2小例子(转)

    5. **参数映射**:iBatis支持简单的类型转换和复杂的Map对象映射。例如,使用#{param}语法将Java对象的属性值映射到SQL的占位符。 6. **结果映射**:当查询结果复杂时,可以定义结果映射来处理一对一、一对多、多对...

    ibatis API及示例

    Ibatis的主要目标是简化数据访问层的实现,使得数据库操作更为简单、灵活。 描述中提到的“博文链接:https://itsoul.iteye.com/blog/1407786” 提供了一个外部资源,可能包含了对Ibatis API的详细解析和实用示例。...

    ibatis与strtus2集成的简单示例

    在Java Web开发中,Struts2和iBatis是两个非常重要的框架。Struts2作为MVC(Model-View-Controller)架构的一部分,主要用于处理HTTP请求和控制应用程序流程,而iBatis则是一个持久层框架,它将SQL语句与Java代码...

    ibatis入门示例

    这个入门示例展示了如何简单地实现CRUD功能,但Ibatis的功能远不止这些,它还支持存储过程、结果集映射、自定义类型处理器等多种高级特性,使得数据库操作更加灵活和高效。在实际项目中,根据需求和团队习惯,选择...

    iBATIS SQL Maps示例代码

    iBATIS是一个开源的Java框架,它为数据库访问提供了一个简单而强大的解决方案。这个框架的主要目的是将SQL语句与Java代码分离,使开发者能够编写可维护的、灵活的数据库操作代码,而无需处理传统的JDBC API。iBATIS...

    iBATIS简单例子

    **标题:“iBATIS简单例子”** iBATIS是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而避免了Java代码与SQL的耦合,提高了开发效率。在这个简单的例子中,我们将深入理解iBATIS的基本...

    webwork+spring+ibatis简单实例

    这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的示例。以下是关于这三个框架及其整合方式的详细说明: **WebWork**: WebWork是一个轻量级的MVC(模型-视图-控制器)...

    Ibatis2.0注解示例.docx

    【标题】:Ibatis2.0注解示例 【描述】:本教程将指导您如何构建一个基于注解的Spring 2.5、Struts2和Ibatis2的集成框架。 【标签】:java、ssi(Spring+Struts+Ibatis)、ibatis2 【部分内容】: 构建SSI...

    最简单的iBatis入门例子

    这个"最简单的iBatis入门例子"将引领我们逐步理解并掌握iBatis的核心概念和基本用法。 首先,我们需要了解iBatis的基本架构。iBatis主要由三部分组成:配置文件(ibatis-config.xml)、映射文件(mapper.xml)和...

    iBatis 简单增删改查(CRUD)操作

    通过以上步骤,你已经掌握了iBatis的基本使用,能够进行简单的增删改查操作。在实际开发中,还可以结合Spring等框架,进一步提高开发效率和代码质量。记住,理解iBatis的核心思想——SQL与Java代码的分离,有助于更...

Global site tag (gtag.js) - Google Analytics