ibatis学习1

来源:互联网 发布:软件编写 编辑:程序博客网 时间:2024/06/09 23:19

摘《ibatis开发指南》

1.SQL MAP工作原理

将一个对象作为参数,为sql修改语句和查询语句设定参数值

1).执行mapped statement 。sql map框架将创建一个preparedStatement实例,用参数对象为preparedstatement实例设定参数,执行preparedStatement并从resultset中创建结果对象

2).执行sql的更新数据库语句时,返回受影响的数据行数。执行查询语句时,将返回一个结果对象或对象的集合。和参数对象一样,结果对象可以使javabean,map实现和基本数据类型的包装类

 

2.sql map配置文件(包括sqlmapconfig.xml 和sql map映射文件)

1)sqlmapconfig.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 resource="sqlmap.properties"/>
          <!--sql map配置文件拥有唯一的<properties>元素 用于在配置文件中使用标准的java属性文件(name=value)
                           这样做后,在属性文件中定义的属性可以作为变量在sql map配置文件及其所包含的所有sql map映射文件中引用。例:
                           属性文件中包含:driver=org.hsqldb.jdbcDriver
                            sql map配置文件及其每个映射文件都可以使用占位符${driver}来代表值org....
                            <property name="JDBC.Driver" value="${driver}"/>
           -->

          <!--
         <typeAlias>元素为一个较长的,全限定类名指定一个较短的别名
                           sql map配置文件预定义了几个JDBC别名等
          -->
        <typeAlias alias="String" type="java.lang.String" />
          <!--为sql map配置事务管理服务  type指定所使用的事务管理器类型
                         jdbc,jta,external
                       jdbc通过常用的connection commit()和rollback()方法,让jdbc管理事务
             -->
         <transactionManager type="JDBC" >
           <!--
                             <datasource>是<transactionManager>的一部分,为sql map数据源设置了一系列参数
             -->
           <dataSource type="SIMPLE">
                                       <property name="JDBC.Driver" value="${jdbc.driverClass}" />  
                                      <property name="JDBC.ConnectionURL" value="${jdbc.url}" /> 
                                      <property name="JDBC.Username" value="${jdbc.username}" />  
                                      <property name="JDBC.Password" value="${jdbc.password}" />  
             </dataSource>

          <!---

                     注:sqlmap.properties内容:

                            jdbc.driverClass=oracle.jdbc.driver.OracleDriver
                            jdbc.url=jdbc:oracle:thin:@oracle服务器ip:1521:unieap
                            jdbc.username=scott
                            jdbc.password=tiger

           -->
           </transactionManager>
          <!--
                  <sqlMap>元素用于用于包括sql map映射文件和其他的sql map配置文件
                   每个sqlmapclient对象使用的所有的sql map映射文件都要在此声明,必需在这里指定
                 所有的sqlmap文件

           -->
           <sqlMap resource="com/zzl/dao/sql/User_tab.xml" />
</sqlMapConfig>

2)sql map映射文件

一个sql map xml映射文件可以包含任意多个mapped statement,parameter map和result map
sqlmap的名称是全局的,所有的sqlmap文件中的名称必须唯一

sql map的核心概念是 mapped statement 。mapped statement可以使用任意的sql语句
并拥有parame map(输入)和result map(输出)

<?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="User_tab">
            <typeAlias alias="String" type="java.lang.String" />

             <typeAlias alias="user_tab" type="com.zzl.entity.User_tab">

             <!--resultClass和resultMap等具体内容  ibatis学习2将在下一节讲到-->  
            <select id="login" parameterClass="user_tab" resultClass="user_tab">
                       select user_name, user_pwd, user_is_admin from user_tab where user_name=#user_name# and user_pwd=#user_pwd#
            </select>
  </sqlMap>