[转]ibatis初步

 自: http://dev.csdn.net/article/79/79164.shtm

<!--[if !supportLists]-->1.   <!--[endif]-->总体描述

Eclipse为例说明ibatis用法,数据库为MS SQL2000ibatis版本为2.0, jDK1.5, 以对一个用户信息表 user_info的插入、查询(单条记录),多记录查询为例说明itatis的用法。
    
说明:

     本文适合初次接触ibatis的读者。
     文章中如有不妥之处,欢迎指正。
     如国引用,请说明出处,谢谢。

<!--[if !supportLists]-->2.   <!--[endif]-->准备工作

<!--[if !supportLists]-->1.       <!--[endif]-->安装Eclipse 3.0.1

<!--[if !supportLists]-->2.       <!--[endif]-->安装jdk1.5

<!--[if !supportLists]-->3.       <!--[endif]-->下载 ibatis 2.0 开发包  www.ibatis.com

<!--[if !supportLists]-->4.       <!--[endif]-->下载MS SQL JDBC驱动包, MSJDBC3.0 SP3

<!--[if !supportLists]-->5.       <!--[endif]-->下载日志操作包 commons-logging.jar

<!--[if !supportLists]-->3.   <!--[endif]-->开发步骤

<!--[if !supportLists]-->1.       <!--[endif]-->新建J2EE工程 test

<!--[if !supportLists]-->2.       <!--[endif]-->test下建立包 cjs

<!--[if !supportLists]-->3.       <!--[endif]-->建立文件夹 sqlmap

<!--[if !supportLists]-->4.       <!--[endif]-->建立文件夹 sqlmap.map

<!--[if !supportLists]-->5.       <!--[endif]-->sqlmap.map 下建立三个文件:

SqlMapConfigExample.properties

sql-map-config.xml

user.xml

 

文件内容如下:

 

SqlMapConfigExample.properties

-----------------------------------------------------------------------------------------------------------

 

driver=com.microsoft.jdbc.sqlserver.SQLServerDriver

url=jdbc:microsoft:sqlserver://localhost:1433;

DatabaseName=java

username=sa

password=tn

-----------------------------------------------------------------------------------------------------------

sql-map-config.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">

 

  <sqlMapConfig>

 

   <properties

    resource="sqlmap/map/SqlMapConfigExample.properties" />

 

   <settings

    cacheModelsEnabled="true"

    enhancementEnabled="true"

    lazyLoadingEnabled="true"

    maxRequests="32"

    maxSessions="10"

    maxTransactions="5"

    useStatementNamespaces="false" />

 

   <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}"/>

    </dataSource>

   </transactionManager>

 

    

   <sqlMap resource="sqlmap/map/User.xml" />

</sqlMapConfig>

-----------------------------------------------------------------------------------------------------------

 

 

user.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="User">

    <select id="getUser" parameterClass="java.lang.Integer"

        resultClass="cjs.User">

        SELECT * FROM user_info WHERE uid=#uid#

    </select>

    <select id="getAllUser" resultClass="cjs.User">

    select

            * from user_info

    where name = #value#

    </select>

 

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

         INSERT INTO

             user_info(name, sex, age, addr, zipcode)

         VALUES (#name#, #sex#, #age#, #addr#, #zipcode#)

    </insert>

</sqlMap>

-----------------------------------------------------------------------------------------------------

 

<!--[if !supportLists]-->6.       <!--[endif]-->test上右键,点击导入,将

commonslogging.jar

ibatis-common-2.jar

ibatis-dao-2.jar

ibatis-sqlmap-2.jar

msbase.jar

mssqlserver.jar

msutil.jar

导入到Lib文件夹中

<!--[if !supportLists]-->7.       <!--[endif]-->在项目-》属性-》构建路径中添加外部 jar的引用,也就是上面几个 jar

<!--[if !supportLists]-->8.       <!--[endif]-->建立一个数据库 java,并执行下面脚本

Table.sql

-----------------------------------------------------------------------------------------------------

CREATETABLE user_info

(

  uid intidentity(1,1) primarykey,

  namevarchar(20),

  sex int,

  ageint,

  addr varchar(50),

  zipcode varchar(6),

);

-----------------------------------------------------------------------------------------------------

 

<!--[if !supportLists]-->9.       <!--[endif]-->cjs包下面编写类

Myapp.java

Operates.java

User.java

 

内容如下:

Myapp.java

-----------------------------------------------------------------------------------------------------------

/*

 * 创建日期2005-10-26

 *

 * TODO 要更改此生成的文件的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

 

/**

 * @author Administrator

 *

 * TODO 要更改此生成的类型注释的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

package cjs;

import java.io.Reader;

 

import com.ibatis.common.resources.Resources;

import com.ibatis.sqlmap.client.SqlMapClient;

import com.ibatis.sqlmap.client.SqlMapClientBuilder;

 

 

public class Myapp {

    private static final SqlMapClient sqlMap;

    static {

        try {

            String resource = "sqlmap/map/sql-map-config.xml";

            Reader reader = Resources.getResourceAsReader (resource);

            sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);

        }

        catch (Exception e) {

         e.printStackTrace();   

        throw new RuntimeException ("Error initializing MyApp class. Cause:"+e);

        }

    }

    public static SqlMapClient getSqlMapInstance () {

        return sqlMap;

    }

}

-----------------------------------------------------------------------------------------------------------

 

 

Operates.java

-----------------------------------------------------------------------------------------------------------

/*

 * 创建日期2005-10-26

 *

 * TODO 要更改此生成的文件的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

 

/**

 * @author Administrator

 *

 * TODO 要更改此生成的类型注释的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

 

package cjs;

import cjs.User;

import java.util.Iterator;

import java.util.List;

 

import com.ibatis.sqlmap.client.SqlMapClient;

 

public class Operates {

private static void insertData(User newUser){

        SqlMapClient sqlMap = Myapp.getSqlMapInstance();

        try{

           Integer uid= new Integer(1);

        //   User user = (User) sqlMap.queryForObject ("getUser", uid);

      

           System.out.println("Use ibatis to Insert a new User:");

           /*

           System.out.println("Uid = " + "系统自动产生");

           System.out.println("name =" + newUser.getName());

           System.out.println("setSex =" + newUser.getSex());

           System.out.println("setAge = " + newUser.getAge());

           System.out.println("setAddr = " + newUser.getAddr());

           System.out.println("setZipcode = " + newUser.getZipcode());

           */

           System.out.println(newUser.toString());

           sqlMap.insert ("insertUser", newUser);

           System.out.println("Insert success!");

          

        }

        catch(Exception e){

               e.printStackTrace();

        }

}

private static User query(Integer uid){

        User myuser = new User();

       

        SqlMapClient sqlMap = Myapp.getSqlMapInstance();

        try{

               myuser = (User)sqlMap.queryForObject ("getUser", uid);

        }catch(Exception e){

               e.printStackTrace();

        }finally{

               return myuser;

        }

}

private static void queryList(String name){

        try{

               SqlMapClient sqlMap = Myapp.getSqlMapInstance();

               List userList = sqlMap.queryForList("getAllUser",name);

               if(userList!=null && !userList.isEmpty()){

                      User tmpUser = new User();

                      System.out.println("There are " + userList.size()+ " rows records"

                                    + " whose name is " + name + ":" );

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

                             tmpUser = (User)iter.next();

                             System.out.println(tmpUser.toString());

                      }

               }else{

                      System.out.println("There is 0 row record whose name is: " + name);

               }

        }catch(Exception e){

               e.printStackTrace();

        }

}

    public static void main(String[] args) {

        User newUser= new User();

        //newUser.setUid(6);

        newUser.setName("cjs");

        newUser.setSex(2);

        newUser.setAge(2);

      

        newUser.setAddr("dfghg");

        newUser.setZipcode("301");

       

        // insert

        //insertData(newUser);

       

        // query a object

        /*

        Integer uid= new Integer(5);

        User getUser = query(uid);

        System.out.println("Query User whose id equal " + uid + ":");

        System.out.println(getUser.toString());

        */

       

        // query many objects

        String name = "cjs";

        queryList(name);

  

    }

}

-----------------------------------------------------------------------------------------------------------

 

User.java

-----------------------------------------------------------------------------------------------------------

 

package cjs;

/*

 * 创建日期2005-10-26

 *

 * TODO 要更改此生成的文件的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

 

/**

 * @author Administrator

 *

 * TODO 要更改此生成的类型注释的模板,请转至

 * 窗口首选项 Java 代码样式代码模板

 */

public class User {

    public int uid;

    public String name;

    public int sex;

    public int age;

    public String addr;

    public String zipcode;  

 

    public String getAddr() {

        return addr;

    }

    public void setAddr(String addr) {

        this.addr = addr;

    }

    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 int getSex() {

        return sex;

    }

    public void setSex(int sex) {

        this.sex = sex;

    }

    public int getUid() {

        return uid;

    }

    public void setUid(int uid) {

        this.uid = uid;

    }

    public String getZipcode() {

        return zipcode;

    }

    public void setZipcode(String zipcode) {

        this.zipcode = zipcode;

    }

   

    public String toString(){

    String szUser = new String();

    szUser += "Uid = " + uid + "; ";

    szUser += "name =" + name + "; ";

        szUser += "setSex =" + sex + "; ";

        szUser += "setAge = " + age+ "; ";

        szUser += "setAddr = " + addr+ "; ";

        szUser += "setZipcode = " + zipcode+ "; ";

        return szUser;

    }

}

-----------------------------------------------------------------------------------------------------------

 

<!--[if !supportLists]-->4.   <!--[endif]-->运行

通过Operates.java 中的main() 来调试各种情况,包括插入数据,查询一条数据,查询多条数据。

<!--[if !supportLists]-->5.   <!--[endif]-->注意

<!--[if !supportLists]-->1.              <!--[endif]-->连接不同的数据库,通过修改SqlMapConfigExample.properties 中的 driverURL就可以了。

<!--[if !supportLists]-->2.              <!--[endif]-->注意sql-map-config.xml 的路径

<!--[if !supportLists]-->3.              <!--[endif]-->参数中为Integer时,最好指定为 java.Lang.Integer,如果为字符串,则可以不指定

<!--[if !supportLists]-->4.              <!--[endif]-->注意返回结果类型的指定

<!--[if !supportLists]-->5.              <!--[endif]-->注意插入语句中,sql语句中的变量为类的属性值。

 

posted on 2006-03-20 16:46 扭转乾坤 阅读(321) 评论(0)  编辑  收藏 所属分类: 数据库


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(2)

随笔分类(31)

随笔档案(30)

文章分类(32)

文章档案(33)

相册

PHP小站-首页

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜