ibatis2.0知识点

来源:互联网 发布:阿佳妮玛戈皇后知乎 编辑:程序博客网 时间:2024/05/17 23:27

一、ibatis2.0

1、是什么?

       Ibatis是一个轻量级的ORM框架。相对于Hibernate“一站式”的ORM解决方案而言,ibatis是一个“半自动化”的ORM实现。

2、有什么?

       同Hibernate大致一样(Session、Transaction、Connection),ibatis中不叫SessionFactory而是叫SqlMapBuilder。

3、怎么做?

 搭建环境:导入相关的jar包
   --oracle(jdbc)驱动包
   --ibatis的jar包
 配置文件:
   --jdbc连接的属性文件
     driver=oracle.jdbc.driver.OracleDriver
     url=jdbc:oracle:thin:@127.0.0.1:1521:数据库名称
     username=用户名称
     password=用户密码
   --总配置文件SqlMapConfig.xml     
   --关于每个实体的映射文件(map文件)

       (1)创建数据库,并创建相应的表格;

(2)开发中使用日志,在classpath中配置log4j.properties文件;

(3)配置文件:实例配置、基本代码和映射文件(文件名须与VO名一样):

实例配置:

       <?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>

        <settings

cacheModelsEnabled="true" <!-- 是否启用sqlMapClient上的缓存机制,建议设为true -->

enhancementEnabled="true" <!是否针对POJO启用字节码增强机制以提升getter/setter调用性能,避免使用java反射所带来的性能开销,同时也为lazy loading带来很大的性能提升,建议设为true -->

lazyLoadingEnabled="true" <!-- 是否启用延迟装载机制,建议设为true -->

errorTracingEnabled="true" <!-- 是否启用错误机制,建议在开发期间设为true -->

maxRequests="32" <!最大并发请求数 -->

maxSessions="10" <!最大session数,即当前最大允许的并发SqlMapConfig数,介于最大并发请求和最大并发事务数之间-->

maxTransactions="5" <!最大并发事务数 -->

useStatementNamespaces="false" <!-- 是否使用Statement命名空间 -->

/>

<!—事务管理器JDBC、JTA和EXTERNAL -->

         <transactionManager type="JDBC" commitRequired="false">

            <dataSource type="SIMPLE">

                <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver"/>

<property name="JDBC.ConnectionURL"value="jdbc:oracle:thin:@localhost:1521:orcl2"/>

                <property name="JDBC.Username" value="test"/>

                <property name="JDBC.Password" value="test"/>

            </dataSource>

        </transactionManager>

  <sqlMap resource="cn/javass/test/ibatis/UserModel.xml"/>

  </sqlMapConfig>

映射文件配置如下:

       <?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>

           <!-- -- -- -- -- -- -- -- -- -- -- -- 声明别名-- -- -- -- -- -- -- -- -- -- -- -- -- -- -->

        <typeAlias alias="um" type="cn.javass.test.ibatis.UserModel"/>

             <typeAlias alias="qm" type="cn.javass.test.ibatis.QueryUserModel"/>

          <!-- -- -- -- -- -- -- -- -- -- -- -- 声明别名结束- -- -- -- -- -- -- -- -- -- -- -- -- -->

        <!-- -- -- -- -- -- -- -- -- -- -- -- 具体操作-- -- -- -- -- -- -- -- -- -- -- -- -- -- -->

<select id="getAllPage"<!-- -- -- id在java代码中使用的名字,代表所对应的具体操作--- -- -->

        parameterClass="qm"<!-- -- -- 操作所需的参数类型--- -- -->

        resultClass="um">  <!-- -- -- 操作返回类型--- -- -->

 

        <!-- -- 通过<![CDATA[……]]>节点来避免Sql中与xml规范相冲突的字符对xml文件合法性造成影响 -- -->

        <![CDATA[

            select uuid from (

                Select rownum r,uuid,name   From tbl_test

            )

            where r > #fromNum# and r <= #toNum#

        ]]>

        </select>  

 

<select id="getAll"

        parameterClass="qm"

        resultClass="um">

        <![CDATA[

            select uuid,name from (

            select rownum r,uuid,name from tbl_test

        ]]>        

    <!-- -- -- 动态拼接传入的条件 -- -- -->

                <dynamic prepend="WHERE">

                    <isNotEmpty prepend="AND" property="name">

                        (name like #name#)

                    </isNotEmpty>

                    <isNotEmpty prepend="AND" property="uuid">

                        (uuid = #uuid#)

                    </isNotEmpty>

                </dynamic

        <![CDATA[

        )

            where r > #fromNum# and r <= #toNum#       

        ]]>

       </select>

 

        <select id="getUserByName"

        parameterClass="java.lang.String"

        resultClass="um">

        <![CDATA[

            select uuid,name from tbl_test where name = #name#

        ]]>

        </select>

 

        <update id="update"

        parameterClass="um">

        <![CDATA[

            UPDATE tbl_test SET name=#name# WHERE uuid = #uuid#

        ]]>

        </update>

   

        <insert id="create"

        parameterClass="um">

        <![CDATA[

            INSERT INTO tbl_test (uuid,name) VALUES (#uuid#,#name#)

        ]]>

            </insert>

            <delete id="delete"

            parameterClass="java.lang.String">

            <![CDATA[

            delete from tbl_test where uuid = #uuid#

            ]]>

            </delete>

                 <!-- -- -- -- -- -- -- -- -- -- -- --具体操作结束-- -- -- -- -- -- -- -- -- -- -- -- -- -- -->

</sqlMap>

POJO中如何使用:

       XmlSqlMapClientBuilder作用是根据配置文件创建SqlMapClient实例;

       SqlMapClient的获得:

              String resource = “com/javass/test/SqlMapConfig.xml”;

              Reader reader = Resources.getResourceAsReader(resource);

              XmlSqlMapClientBuilder xmlBuilder = new XmlSqlMapClientBuilder();

              SqlMapClient sqlMap = xmlBuilder.buildSqlMap(reader);

4、同Hibernate比较优缺点。


原创地址:http://blog.csdn.net/wjx85840948/article/details/4013674

原创粉丝点击