瘋狂

          STANDING ON THE SHOULDERS OF GIANTS
          posts - 481, comments - 486, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ibatis學習(一)--ibatis介紹以及用例

          Posted on 2007-12-07 18:31 瘋狂 閱讀(9789) 評論(0)  編輯  收藏
           

          介紹

          iBATIS是以SQL為中心的持久化層框架。能支持懶加載、關聯查詢、繼承等特性。

          iBATIS不同于一般的OR映射框架(eg:hibernate)OR映射框架,將數據庫表、字段等映射到類、屬性,那是一種元數據(meta-data)映射。iBATIS則是將SQL查詢的參數和結果集映射到類。因此可以說,iBATIS做的是SQL Mapping的工作。它把SQL語句看成輸入以及輸出,結果集就是輸出,而where后面的條件參數則是輸入。iBATIS能將輸入的普通POJO對象、MapXML等映射到SQL的條件參數上,同時也可以將查詢結果映射到普通POJO對象(集合)、MapXML等上面。

          iBATIS使用xml文件來映射這些輸入以及輸出。能大大減少數據庫存儲部分的代碼量,而且可以非常方便的利用SQL中的一些小技巧。

          簡單示例

          基于ibatis-2.3.0.677版本。

          1、 創建新的項目,并引入jar

          a)         ibatis-2.3.0.677.jar

          b)        mysql驅動

          2、 在類路徑中(classes下)提供ibatis的配置文件: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>

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

              <dataSource type="SIMPLE">

                <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>

                <property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1/ibatis"/>

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

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

              </dataSource>

           </transactionManager>

           <sqlMap resource="com/ibatis/model/User.xml"/>

          </sqlMapConfig>

          3、創建實體類:User.java

          package com.ibatis.model;

          publicclass User {

              privateintid;

              private String username;

              private String password;

             

              publicint getId() {

                 returnid;

              }

              publicvoid setId(int id) {

                 this.id = id;

              }

              public String getPassword() {

                 returnpassword;

              }

              publicvoid setPassword(String password) {

                 this.password = password;

              }

              public String getUsername() {

                 returnusername;

              }

              publicvoid setUsername(String username) {

                 this.username = username;

              }

          }

          4、創建針對User對象的CRUDxml映射配置:User.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="User">

           <!-- Use type aliases to avoid typing the full classname every time. -->

           <typeAlias alias="User" type="com.ibatis.model.User"/>

           <!-- Select with no parameters using the result map for Account class. -->

           <select id="selectAllUsers" resultClass="User">

              select * from t_user

           </select>

           

           <select id="selectUser" resultClass="User" parameterClass="int">

            select * from t_user where id=#id#

           </select>

           

           <insert id="insertUser" parameterClass="User">

            insert into t_user values (

                 null,#username#,#password#

            )

           </insert>

           

           <update id="updateUser" parameterClass="User">

            update t_user set username = #username#,password=#password#

            where id=#id#

           </update>

           

           <delete id="deleteUser" parameterClass="int">

            delete from t_user where id=#id#

           </delete>

          </sqlMap>

          5、創建測試程序測試:

          package com.crm.model;

          import java.io.Reader;

          import java.util.Iterator;

          import java.util.List;

          import com.ibatis.common.resources.Resources;

          import com.ibatis.sqlmap.client.SqlMapClient;

          import com.ibatis.sqlmap.client.SqlMapClientBuilder;

          /**

           *最簡單的形式!

           *@authorq

           *

           */

          publicclass UserTest {

              /**

               *@paramargs

               */

              publicstaticvoid main(String[] args) throws Exception{

                 //從配置文件中得到SqlMapClient對象

                 Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");

                 SqlMapClient sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);

                 reader.close();

                

                 //創建用戶數據

                 for(int i=0; i<10; i++){

                     User user = new User();

                     user.setUsername("用戶"+i);

                     user.setPassword("密碼"+i);

                     sqlMapper.insert("insertUser", user);

                 }

                

                 //查詢用戶數據

                 List users = sqlMapper.queryForList("selectAllUsers");

                 for (Iterator iter = users.iterator(); iter.hasNext();) {

                     User user = (User) iter.next();

                     System.out.println(user.getUsername());

                 }

                

                 //查詢特定用戶的數據

                 User user = (User)sqlMapper.queryForObject("selectUser", 1);

                 System.out.println("用戶【id="+1+"】的名稱是"+user.getUsername());

                

                 //更新用戶的信息

                 user = new User();

                 user.setId(3);

                 user.setUsername("更改之后的用戶名稱");

                 user.setPassword("密碼被更改");

                 sqlMapper.update("updateUser", user);

                

                 //刪除用戶的信息

                 sqlMapper.delete("deleteUser", 6);

              }

          }

           


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 保定市| 东宁县| 昔阳县| 白水县| 文登市| 张家川| 全州县| 郁南县| 平南县| 崇礼县| 北宁市| 浦江县| 苍南县| 武强县| 新晃| 湘潭市| 莱阳市| 汽车| 崇州市| 淳安县| 木里| 铜鼓县| 专栏| 博兴县| 星座| 东宁县| 钟祥市| 三原县| 奈曼旗| 原阳县| 兴安县| 玛多县| 鹿泉市| 北川| 龙游县| 含山县| 阿城市| 香港 | 分宜县| 枣强县| 滦南县|