[轉(zhuǎn)]ibatis初步

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

          <!--[if !supportLists]-->1.?? <!--[endif]-->總體描述

          Eclipse為例說(shuō)明ibatis用法,數(shù)據(jù)庫(kù)為MS SQL2000,ibatis版本為2.0, jDK1.5, 以對(duì)一個(gè)用戶信息表 user_info的插入、查詢(單條記錄),多記錄查詢?yōu)槔f(shuō)明itatis的用法。
          ????
          說(shuō)明:

          ???? 本文適合初次接觸ibatis的讀者。
          ???? 文章中如有不妥之處,歡迎指正。
          ???? 如國(guó)引用,請(qǐng)說(shuō)明出處,謝謝。

          <!--[if !supportLists]-->2.?? <!--[endif]-->準(zhǔn)備工作

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

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

          <!--[if !supportLists]-->3.?????? <!--[endif]-->下載 ibatis 2.0 開發(fā)包? www.ibatis.com

          <!--[if !supportLists]-->4.?????? <!--[endif]-->下載MS SQL JDBC驅(qū)動(dòng)包, MSJDBC3.0 SP3

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

          <!--[if !supportLists]-->3.?? <!--[endif]-->開發(fā)步驟

          <!--[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 下建立三個(gè)文件:

          SqlMapConfigExample.properties

          sql-map-config.xml

          user.xml

          ?

          文件內(nèi)容如下:

          ?

          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上右鍵,點(diǎn)擊導(dǎo)入,將

          commonslogging.jar

          ibatis-common-2.jar

          ibatis-dao-2.jar

          ibatis-sqlmap-2.jar

          msbase.jar

          mssqlserver.jar

          msutil.jar

          導(dǎo)入到Lib文件夾中

          <!--[if !supportLists]-->7.?????? <!--[endif]-->在項(xiàng)目-》屬性-》構(gòu)建路徑中添加外部 jar的引用,也就是上面幾個(gè) jar

          <!--[if !supportLists]-->8.?????? <!--[endif]-->建立一個(gè)數(shù)據(jù)庫(kù) java,并執(zhí)行下面腳本

          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

          ?

          內(nèi)容如下:

          Myapp.java

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

          /*

          ?* 創(chuàng)建日期2005-10-26

          ?*

          ?* TODO 要更改此生成的文件的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO 要更改此生成的類型注釋的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) 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

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

          /*

          ?* 創(chuàng)建日期2005-10-26

          ?*

          ?* TODO 要更改此生成的文件的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO 要更改此生成的類型注釋的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) 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 = " + "系統(tǒng)自動(dòng)產(chǎn)生");

          ?????????? 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;

          /*

          ?* 創(chuàng)建日期2005-10-26

          ?*

          ?* TODO 要更改此生成的文件的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

          ?* TODO 要更改此生成的類型注釋的模板,請(qǐng)轉(zhuǎn)至

          ?* 窗口首選項(xiàng) 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]-->運(yùn)行

          通過(guò)Operates.java 中的main() 來(lái)調(diào)試各種情況,包括插入數(shù)據(jù),查詢一條數(shù)據(jù),查詢多條數(shù)據(jù)。

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

          <!--[if !supportLists]-->1.????????????? <!--[endif]-->連接不同的數(shù)據(jù)庫(kù),通過(guò)修改SqlMapConfigExample.properties 中的 driverURL就可以了。

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

          <!--[if !supportLists]-->3.????????????? <!--[endif]-->參數(shù)中為Integer時(shí),最好指定為 java.Lang.Integer,如果為字符串,則可以不指定

          <!--[if !supportLists]-->4.????????????? <!--[endif]-->注意返回結(jié)果類型的指定

          <!--[if !supportLists]-->5.????????????? <!--[endif]-->注意插入語(yǔ)句中,sql語(yǔ)句中的變量為類的屬性值。

          ?

          posted on 2006-03-20 16:46 扭轉(zhuǎn)乾坤 閱讀(339) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫(kù)

          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類(31)

          隨筆檔案(30)

          文章分類(32)

          文章檔案(33)

          相冊(cè)

          PHP小站-首頁(yè)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 大连市| 阜新| 恩施市| 偃师市| 井冈山市| 文安县| 丹巴县| 建水县| 道真| 册亨县| 肃宁县| 兖州市| 都兰县| 许昌市| 孟津县| 美姑县| 满洲里市| 东兰县| 龙州县| 三穗县| 平果县| 天柱县| 亳州市| 嘉定区| 万全县| 科技| 菏泽市| 宝清县| 台湾省| 柳河县| 孟州市| 闻喜县| 南靖县| 龙海市| 新龙县| 客服| 黔西| 晋城| 新宾| 平湖市| 赣榆县|