[轉]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 扭轉乾坤 閱讀(336) 評論(0)  編輯  收藏 所屬分類: 數據庫

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(31)

          隨筆檔案(30)

          文章分類(32)

          文章檔案(33)

          相冊

          PHP小站-首頁

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 玉屏| 观塘区| 阿鲁科尔沁旗| 凭祥市| 平凉市| 东兴市| 东宁县| 霍城县| 内黄县| 清镇市| 页游| 阿拉善盟| 江孜县| 阿图什市| 通州市| 开原市| 通辽市| 曲周县| 东乡族自治县| 黔东| 广宗县| 桃园市| 宣汉县| 周宁县| 巴彦淖尔市| 通河县| 长岭县| 紫金县| 浙江省| 海口市| 辽阳县| 京山县| 永昌县| 瑞安市| 恩施市| 裕民县| 迁西县| 寿阳县| 霍山县| 黄山市| 温州市|