• Ibatis2.0使用说明(一)——入门实例篇


    本文章将从一个Ibatis的具体示例,帮助你快速了解IBatis框架。

    一个简单的IBatis应用包含以下基本步骤:

    一、 配置文件
    1. 配置SqlMapConfig.properties文件

    2. 配置SqlMapConfig.xml文件

    3. 配置SqlMap.xml文件(可能有多个文件,一般情况下,可以一个表对应一个SqlMap.xml文件,文件名称可以与表名相同)

    注意:上面所述的SqlMapConfig.xml文件必须在类路径中,SqlMapConfig.properties和SqlMap.xml文件可以在类路径中,也可以不在类路径中。当SqlMapConfig.properties和SqlMap.xml文件不在类路径中的时候,配置也不同,在本文中,这三个文件都放在类路径中。

    二、 程序调用
    1. 初始化SqlMapClient对象。

    2. 运行Sql语句:你可以调用SqlMapClient对象的queryfor...()、insert()、update()、delete()来分别执行select、insert、update和delete操作。

    好了,下面我们结合实例进行讲解:
    三、实例:

    下面的例子是以mysql为例进行说明,建立了一个author表,为了方便调试代码,你可以将ibatis-common-2.jar、ibatis-dao-2.jar、ibatis-sqlmap-2.jar和lib目录下的所有的jar都加载到你的程序中,在后续的文章中,将会说明每个Jar的用途。

    (一) 创建数据库和表
    创建一个名字为IBatisExample的数据库
    CREATE TABLE author (
      auth_id int(8) NOT NULL auto_increment,
      auth_name varchar(100) NOT NULL default '',
      auth_age int(3) NOT NULL default '0',
      auth_tel varchar(100) NOT NULL default '',
      auth_address varchar(100) NOT NULL default '',
      PRIMARY KEY  (auth_id)
    ) TYPE=MyISAM;
    INSERT INTO author VALUES (1, '作者一', 30, '025-12345678', '南京');
    INSERT INTO author VALUES (2, '作者二', 30, '025-12345678', '南京');

    (二) 配置文件

    1. 配置SqlMapConfig.properties文件
    文件内容:
    driver=org.gjt.mm.mysql.Driver
    url=jdbc:mysql://192.168.0.26:3306/IBatisExample?useUnicode=true&characterEncoding=GB2312
    username=root
    password=123456

    2. 配置SqlMapConfig.xml文件
    文件内容:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <!-- Always ensure to use the correct XML header as above! -->
    <sqlMapConfig>
    <!-- The properties (name=value) in the file specified here can be used placeholders in this config
    file (e.g. “${driver}”. The file is relative to the classpath and is completely optional. -->
    <properties resource="SqlMapConfig.properties" />
    <!-- These settings control SqlMapClient configuration details, primarily to do with transaction
    management. They are all optional (more detail later in this document). -->
    <settings
    cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    maxRequests="32"
    maxSessions="10"
    maxTransactions="5"
    useStatementNamespaces="false"
    />

    <!-- Configure a datasource to use with this SQL Map using SimpleDataSource.
    Notice the use of the properties from the above resource -->
    <transactionManager type="JDBC" >
    <dataSource type="SIMPLE">
    <property name="JDBC.Driver" value="${driver}"/>
    <property name="JDBC.ConnectionURL" value="${url}"/>
    <property name="JDBC.Username" value="${username}"/>
    <property name="JDBC.Password" value="${password}"/>
    <property name="JDBC.DefaultAutoCommit" value="true" />
    <property name="Pool.MaximumActiveConnections" value="10"/>
    <property name="Pool.MaximumIdleConnections" value="5"/>
    <property name="Pool.MaximumCheckoutTime" value="120000"/>
    <property name="Pool.TimeToWait" value="500"/>
    <property name="Pool.PingQuery" value="select 1 from author"/>
    <property name="Pool.PingEnabled" value="false"/>
    <property name="Pool.PingConnectionsOlderThan" value="1"/>
    <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
    </dataSource>
    </transactionManager>
    <!-- Identify all SQL Map XML files to be loaded by this SQL map. Notice the paths
    are relative to the classpath. For now, we only have one… -->
    <sqlMap resource="com/ibatis/sqlmap/author.xml" />
    </sqlMapConfig>

    3. 配置SqlMap.xml文件
    这里我们命名为author.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap
    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-2.dtd">
    <sqlMap namespace="Author">
    <typeAlias alias="Author" type="com.ibatis.beans.Author" />

    <select id="getAuthor" parameterClass="int" resultClass="Author">
     SELECT auth_id as id,auth_name as name,auth_age as age,auth_tel as telephone,auth_address as address FROM author WHERE auth_id = #id#
    </select>

    <statement id="getAllAuthor" resultMap="authorResult">
     SELECT * FROM author
    </statement>

    <insert id="insertAuthor" parameterMap="authorParameter">
     INSERT INTO author (auth_name,auth_age,auth_tel,auth_address) VALUES (?,?,?,?)
    </insert>

    <update id="updateAuthor" parameterClass="Author">
     UPDATE author set auth_name=#name# WHERE auth_id = #id#
    </update>

    <delete id="deleteAuthor" parameterClass="int">
     delete from author WHERE auth_id = #id#
    </delete>

    </sqlMap>

    (三) 程序调用
    由于源代码很长,所以这里我只给出一些简单的程序调用方法,所以如果有人想要源代码的话,可以留下你的邮箱。
    1. 初始化一个SqlMapClient对象,代码如下:
    public class SqlMapConf
    {
        private static SqlMapClient sqlMapClient;
        static
     {
      try
      {
          System.out.println("sqlMapClient initing.....");
       String resource = "SqlMapConfig.xml";
       Reader reader = Resources.getResourceAsReader (resource);
       sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
      }
      catch (Exception e)
      {
       e.printStackTrace();
       throw new RuntimeException ("Error initializing MyAppSqlConfig class. Cause: " +e);
      }
     }
        public static SqlMapClient getInstance()
        {
            return sqlMapClient;
        } 
    }

    2. 然后要为Author表写一个bean,代码如下:
    public class Author
    {
        private int id;
        private int age;
        private String name;  
        private String address;
        private String telephone;
       
        public int getId()
        {
            return id;
        }
        public void setId(int id)
        {
            this.id=id;
        }
        public int getAge()
        {
            return age;
        }
        public void setAge(int age)
        {
            this.age=age;
        }
        public String getName()
        {
            return name;
        }
        public void setName(String name)
        {
            this.name=name;
        }
       
        public String getAddress()
        {
            return address;
        }
        public void setAddress(String address)
        {
            this.address=address;
        }
        public String getTelephone()
        {
            return telephone;
        }
        public void setTelephone(String telephone)
        {
            this.telephone=telephone;
        }
    }

    3. 程序调用:
    这里将只示范一下getAuthor、insertAuthor1、updateAuthor和deleteAuthor的方法。
    首先应该得到一个SqlMapClient实例:
    SqlMapClient sqlMapClient = SqlMapConf.getInstance();

    (1) getAuthor:
     Author author = (Author)sqlMapClient.queryForObject("getAuthor", new Integer(1));
    (2) getAllAuthor
     List authorList = (List)sqlMapClient.queryForList("getAllAuthor", null);
    (3) insertAuthor:
     Author author = new Author();
     author.setName("作者三");
     author.setAge(31);
     author.setAddress("南京");
     author.setTelephone("025-987654321");
     sqlMapClient.insert(operaName, author);
    (4) updateAuthor
     Author author = new Author();
     author.setName("Updated");
     author.setId(authorID);
     sqlMapClient.update(operaName, author);       
    (5) deleteAuthor
     sqlMapClient.delete("deleteAuthor", new Integer(authorID));

    这里只是做一个简单的例子,希望能够帮助快速的入门,而并没有对IBatis的原理进行剖析,不过通过这几个调用,我想你可能能够猜到IBatis的一部分运作原理了,关于IBatis的原理以及高级应用,请关注后续文章。

  • 相关阅读:
    python学习:匿名函数
    python学习:递归列出目录里的文件
    python学习:函数的递归调用
    ios开发解决遍历删除数组对象报错
    ansible入门
    git入门-分支
    Swift 使用CollectionView 实现图片轮播封装就是这样简单
    iOS复杂动画之抽丝剥茧(Objective-C & Swift)
    大数据
    点击UITableView的cell展开收缩
  • 原文地址:https://www.cnblogs.com/goody9807/p/905214.html
Copyright © 2020-2023  润新知