zoukankan      html  css  js  c++  java
  • ibatis 初体验

    ibatis  也是一个数据持久层  是较于Hibernate的轻量级 的一个开源项目,以前做SSH项目的时候,常有听说它与Hibernate进行比较,说一下我的操作感受。

     可在 http://www.apache.org/直接进行下载  我刚下的是最新版的2.3.4的 郁闷

    竟然缺少dao包 说是2.2 还是2.几  不提供了  直接于spring 配合使用,直接GOOGLE找了别人的demo 进行jar COPY,得以解决!

    他还提供代码生成工具,这个用MyEclipse在线安装即可。

    abatorConfig.xml   代码生成的配置文件  个人觉得不怎么强  不如CodeSmith这样的强!

    文件如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE abatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN" "http://ibatis.apache.org/dtd/abator-config_1_0.dtd" >
    <abatorConfiguration >
      <abatorContext >
     
        <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
        connectionURL="jdbc:sqlserver://localhost:1433;DatabaseName=DemoDB" userId="sa" password="sa" >
          <classPathEntry location="D:\AB\sqljdbc.jar" />
        </jdbcConnection>
       
        <!--targetPackage指定一个包名存放model bean,targetProject是工程名--> 
        <javaModelGenerator targetPackage="com.entity" targetProject="IbatisDemo" />
       
       <!--sqlMapGenerator 指定一个包名存放sqlMap.xml--> 
        <sqlMapGenerator targetPackage="com.dao" targetProject="IbatisDemo" />
      
       <!--daoGenerator 指定一个包名存放dao以及daoImpl--> 
        <daoGenerator targetPackage="com.dao" targetProject="IbatisDemo" type="IBATIS" />
      
        <!--表名,可以多个,默认不写columnOverride的话生成所有字段--> 
        <table tableName="userInfo" >

        </table>
       
      </abatorContext>
    </abatorConfiguration>

    生产这些代码以后生成比较多 还一大堆注释说明,我都删了 就留下了个添加以供测试

    sqpMapConfig.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig        
        PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
        "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
    <sqlMapConfig>  
        <!-- 唯一的Properties文件,加载数据库连接信息 -->  
       <!-- <properties resource="mysql.properties"/>   -->
    <!--配置和优化SqlMapClient实例的各选项,是可选的  
    <settings   
        cacheModelsEnabled="true"//设置缓存      
        enhancementEnabled="true" //是否针对POJO启用字节码增加机制以提升geter/seter的调用效用,为延迟加载带来了及大的性能提升。      
        lazyLoadingEnabled="true"//延时加载      
        errorTracingEnabled="true"      
        maxRequests="32"               //最大并发请求数  
        maxSessions="10"           //最大Session数
        maxTransactions="5"           //最大并发事务数
        useStatementNamespaces="false"   
        />   
    -->  
        <!-- 配置Ibatis事务管理,使用JDBC事务类型,数据源使用Simple类型 -->  
        <transactionManager type="JDBC">  
            <dataSource type="SIMPLE">  
                <property name="JDBC.Driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>  
                <property name="JDBC.ConnectionURL" value="jdbc:sqlserver://localhost:1433;DatabaseName=DemoDB"/>  
                <property name="JDBC.Username" value="sa"/>  
                <property name="JDBC.Password" value="sa"/>  
            </dataSource>  
        </transactionManager>   
        <!-- 配置Ibatis要使用的SqlMap文件信息 -->  
        <sqlMap resource="com/dao/UserInfo_SqlMap.xml"/>  
    </sqlMapConfig> 

    现在就主要操作UserInfo类

    --userInfo_sqlMap.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
    <sqlMap namespace="UserInfo" >
      <resultMap id="abatorgenerated_UserinfoResult" class="com.entity.Userinfo" >
        <!--
          WARNING - This element is automatically generated by Abator for iBATIS, do not modify.
          This element was generated on Sun May 17 21:10:33 CST 2009.
        -->
        <result column="id" property="id" jdbcType="INTEGER" />
        <result column="userName" property="username" jdbcType="VARCHAR" />
        <result column="pwd" property="pwd" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
      </resultMap>


      <insert id="abatorgenerated_insert" parameterClass="com.entity.Userinfo" >
         <selectKey resultClass="int" type="post" keyProperty="id" >   --返回自动增长值
            select @@IDENTITY as value  
        </selectKey>
        insert into UserInfo (userName, pwd, age)
        values (#username:VARCHAR#, #pwd:VARCHAR#, #age:INTEGER#)
      </insert>
    </sqlMap>

    OK   看到了吗 就一个插入的操作

    测试一下

    package com.test;

    import java.io.IOException;
    import java.io.Reader;

    import com.entity.Userinfo;
    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;

    public class Test {

     /**
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub
           try {
            //获取资源文件
      Reader reader=Resources.getResourceAsReader("sqlMapConfig.xml");
      SqlMapClient mapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
      Userinfo userinfo=new Userinfo();
      userinfo.setAge(100);
      userinfo.setUsername("MRRRRR");
      userinfo.setPwd("123456");
      //事务管理
      mapClient.startTransaction();
         String newId= mapClient.insert("abatorgenerated_insert", userinfo).toString();
       mapClient.commitTransaction();
      System.out.println("insert success id value of :"+newId);
     } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     }

    }


     

  • 相关阅读:
    Linux rcp命令详解
    Linux patch命令详解
    Linux paste命令详解
    linux od命令详解
    linux mv命令详解
    Linux more命令详解
    Linux mktemp命令
    MySQL状态变量详解
    mysql性能分析show profile/show profiles
    MySQL执行计划
  • 原文地址:https://www.cnblogs.com/zhangqifeng/p/1458985.html
Copyright © 2011-2022 走看看