`

IBATIS入门(第二节)

阅读更多

我们接这IBATIS入门(第一节)讲:http://yekui.iteye.com/admin/blogs/732256

 

详解User.xml里面的配置:

 

<sqlMap namespace="user"> 这是一个命名空间,学过C的人应该了解命名空间这个名词了,其主要作用就是区别,你可以把他理解为java中的包的概念,意思就是不让重名的类名,等等起冲突。

 

<typeAlias alias="User" type="com.dk.user.UseVO"/>这个是一个JavaBeen的一个路径别名。后面我们就不用写一大串的东东了,把它com.dk.user.UseVO都用User代替了。

 

 <resultMap id="userResult" class="User">
    <result property="id" column="uid"/>
    <result property="name" column="uname"/>
    <result property="age" column="uage"/>
  </resultMap>

 

这个很有必要说一下,你看demo的时候,会有配置这个与我们创建的表结构,映射的东东。但是大多数开发的情况下,我们是不用写这个resultMap的 那么很多人就会问了,特别是学习过hibernate的人就不太明白,如果按照hibernate的里面的配置写法这个是必须的与表结构里面的字段一一对应,事实上 我们先前为什么要配置一个别名 这里就该起作用了。

 

 

往下看。

 

<statement id="createUserTest">
     create table usertest
     (
       uid int primary key identity(1,1),
       uname varchar(20),
       uage int
     )
  </statement>

 

 

这个地方我们调用的时候是这样子的。

 

public static void updateUser(UseVO vo){
  try {
   sqlMapClient.startTransaction();
   int i = sqlMapClient.update("updateUser", vo);
   sqlMapClient.commitTransaction();
   sqlMapClient.endTransaction();
     System.out.println("i\t"+i);
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
 

 

特别注意一点就是第一调用update方法,第二就是我们写的事务一定要提交,不然表就没有创建到数据库中。虽然它提示了你已经船舰成功,但是你去数据库查的时候就是没有这张表,事务没有提交,好不多说了。

 

继续

 <insert id="insertUser" parameterClass="User">
      insert into usertest
      (uname,uage)
      values
      (#name#,#age#)
  </insert>
  

这里记住这里的表还是数据库中的表,学过hibernate的人 老是不明白这里为什么是insert into usertest 这里应该是我的映射啊,按道理他的理解就是insert into User ,请别忘了那句话,在ibatis里面,永远是纯的sql语句编程。

 

 

(#name#,#age#)
这#符号是什么意思啊,你暂时可以这样理解他就是以前我们在sql语句中的那个?,也就是占位符的意思。

 

(#name#,#age#)

那这里的name 与age 有事怎么回事呢,首先我们要先了解 insert into usertest
(uname,uage)是表中的数据的字段
,而values是(#name#,#age#)
你UserBeen里面映射好了JavaBeen参数。

 

 

接下来就是

 

第一:

 

  <select id="selectUser" resultClass="User">
     select uid as id,uname as name,uage as age from usertest
  </select>

 

第二:

   <select id="selectUser" resultMap="userResult" resultClass="User">
     select uid,uname ,uage  from usertest
  </select>

 

第三:

 

   <select id="selectUser" resultMap="userResult" resultClass="User">
     select * from usertest
  </select>

 

实际上你不计较一下这三种写法,就能看出,第二种和第三种没什么区别都一样。但是第一,和第二第三种的写法就有点不太一样,究竟哪里不一样呢,想了半天,想不明白,没关系我们冲程序中看效果。

 

原来按照第一种写法我们就可以把

 

 <resultMap id="userResult" class="User">
    <result property="id" column="uid"/>
    <result property="name" column="uname"/>
    <result property="age" column="uage"/>
  </resultMap>


注释掉。因为这样写就没有写

resultMap的必要了 ,这是为什么呢??

哦,我们一看 他为什么都是as name ,as age,as id 很明显这里就是在他的字段与表中的字段一个一个的映射起来。

所以事实上我们可以把他之前的一个参数去掉

resultClass="User"。

 

继续看:

parameterClass="User" parameterClass="int" parameterClass="String" 这个是你传入的参数。

 

resultClass="User" 这是返回结果集。

 

继续看:

如果是创建或删除表那么就在statement标签里面操作就好了:例如:

 <statement id="createUserTest">
     create table usertest
     (
       uid int primary key identity(1,1),
       uname varchar(20),
       uage int
     )
  </statement>

 

 <statement id="dropUser" >
    drop table usertest
 </statement>

 

 

最后还有一个挺囧的问题。那就是like语句的写法,我总结一句like就是见钱眼开。

 

  <select id="selectUserByName" parameterClass="String" resultClass="User">
       select * from usertest where uname like '%#name#%'
  </select>

这个你怎么写都会报错的,而且无论你怎么改变你所谓正确的写法。

 

搞了半天正确的下发居然是这样子的:很明显见钱眼看,加上美元符 问题解决。

 

  <select id="selectUserByName" parameterClass="String" resultClass="User">
       select * from usertest where uname like '%$name$%'
  </select>

 

 

 

有一些报错,如果你查询语句没有报错,但是数据是null 这就是要看你的resultMap=""是否写对了。

 

ok差不多了应该。基本对这些个东西应该是比较了解了把。到此你入门了基本80%还有写个什么多表映射这个你在工作当中写几个基本就不成问题了 ,至于关于ibaties与spring的整合 这个都应该是google写都能解决了,关键是入门。

 

希望这些对大家有帮助,谢谢。

 

分享到:
评论
1 楼 千秋万世 2010-08-23  
感谢!

相关推荐

    ibatis入门

    **Ibatis 入门教程** Ibatis 是一个优秀的 Java ORM(对象关系映射)框架,它允许程序员将数据库操作与业务逻辑分离,提供灵活的 SQL 配置和映射机制,使得开发人员能够自由地编写 SQL 而不被 ORM 的复杂性所束缚。...

    最简单的iBatis入门例子

    ### iBatis入门示例解析 #### 1. 数据库准备 在开始编写代码之前,我们需要创建一个数据库和相应的表。示例中使用的是MySQL数据库,创建了一个名为`sample`的数据库,并在其中创建了一个名为`t_user`的表,包含`id...

    ibatis入门教程与开发指南

    **ibatis入门教程与开发指南** Ibatis,全称MyBatis-iBATIS,是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以使用简单...

    iBatis入门

    **iBatis入门** iBatis 是一个优秀的持久层框架,它允许开发者将SQL语句直接写在配置文件中,从而避免了Java代码与数据库之间的繁杂交互。它结合了Java的灵活性和SQL的高效查询能力,使得开发更加便捷。本篇文章将...

    ibatis快速入门

    其次,"ibatis的入门"PDF文件可能包含了一步步引导你从零开始学习Ibatis的教程。通常,这样的教程会涵盖安装Ibatis、创建第一个映射文件、调用SQL语句、处理结果集等内容。此外,它可能还会介绍如何使用Ibatis的API...

    ibatis经典入门

    1. "iBATIS-DAO-2_en.pdf":这个文件可能是关于iBATIS DAO层(数据访问对象)的英文版第二版文档,可能涵盖了DAO的设计模式,以及如何使用iBATIS实现DAO接口。 2. "iBATIS-SqlMaps-2_cn.pdf":这可能是关于iBATIS ...

    第一个ibatis例子

    这个"第一个ibatis例子"是一个典型的入门教程,旨在帮助初学者快速理解并掌握Ibatis的基本用法。 首先,Ibatis的核心组件包括XML配置文件、SqlMapConfig.xml、Mapper接口以及Mapper XML文件。在入门例子中,我们...

    IBatis入门教程

    搭建iBatis开发环境是使用这个框架的第一步,通常涉及以下步骤: 1. **导入依赖**:首先需要将必要的jar包引入到项目中,包括iBatis的核心库(如ibatis-2.3.0.677.jar)以及相应的数据库驱动,例如对于MySQL,需要...

    ibatis-2.3.4 开发包 及 官方权威文档(开发指南+入门教程)

    2. **缓存机制**:Ibatis 提供了本地缓存和二级缓存,可以提高数据访问速度。 3. **事务控制**:支持手动和自动的事务管理,可以根据业务需求灵活选择。 4. **动态 SQL**:通过 if, choose, when, otherwise 等标签...

    IBatis.NET开发文档

    2. **iBATIS SQL Maps入门教程**: 入门教程通常从基础开始,帮助新手快速上手: - 安装与设置:指导如何在项目中引入iBATIS.NET,配置项目文件。 - 第一个例子:通过一个简单的CRUD操作,展示iBATIS的基本用法。...

    ibatis 使用手册

    入门教程通常从简单的Hello World示例开始,逐步引导读者了解如何创建和配置iBatis项目,编写第一条SQL,处理查询结果,以及如何进行异常处理。同时,还会讲解如何在实际项目中结合Spring等框架进行集成使用。 **...

    ibatis1.rar_ibatis

    《Ibatis入门详解:从简单案例到深入理解》 Ibatis,作为一个轻量级的Java持久层框架,因其灵活性和易用性而被广大开发者所喜爱。本教程将基于提供的"ibatis1.rar"压缩包文件,带领大家一步步走进Ibatis的世界,...

    iBATIS-SqlMaps-2-快速入门教程.docx

    iBATIS-SqlMaps-2-快速入门教程 iBATIS-SqlMaps-2 是一个 Java 持久层框架,用于简化 Java 应用程序中的数据库交互。快速入门教程旨在帮助开发者快速了解 iBATIS-SqlMaps-2 的使用和配置。 知识点1:iBATIS-Sql...

    ibatis学习锦集

    IBATIS最新最全开发指南 - 通俗易懂IBATIS教程,ibatis基础,ibatis入门.JpetStore_4等!",这说明这份资源不仅全面,还强调了易理解性,特别提到了iBatis的基础知识和入门教程,以及JpetStore_4项目,这是一个经典...

    iBATIS实战

    第2章 iBATIS是什么 26 2.1 映射SQL语句 27 2.2 iBATIS如何工作 29 2.2.1 iBATIS之于小型、简单系统 30 2.2.2 iBATIS之于大型、企业级系统 31 2.3 为何使用iBATIS 31 2.3.1 简单性 32 2.3.2 生产效率 32 2.3.3 性能 ...

    IBatis 中文文档

    2. **创建第一个SQL Map**:教程会指导你编写一个简单的SQL Map,展示如何定义SQL查询并映射结果。 3. **SQL Map客户端**:学习如何在Java代码中使用SqlMapClient,执行SQL Map中的SQL语句。 4. **映射POJO(Plain...

    ibatis hello world code

    2. **第2章 iBATIS是什么**:会详细介绍iBATIS的历史,设计理念,以及它在Java应用中的角色,可能包括它的核心功能,如SQL映射文件,动态SQL等。 3. **第4章 使用已映射语句**:这章节可能深入讲解了如何定义和使用...

Global site tag (gtag.js) - Google Analytics