[轉(zhuǎn)]ibatis初步

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

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

          Eclipse為例說明ibatis用法,數(shù)據(jù)庫為MS SQL2000ibatis版本為2.0, jDK1.5, 以對一個用戶信息表 user_info的插入、查詢(單條記錄),多記錄查詢?yōu)槔f明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 開發(fā)包? www.ibatis.com

          <!--[if !supportLists]-->4.?????? <!--[endif]-->下載MS SQL JDBC驅(qū)動包, 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 下建立三個文件:

          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上右鍵,點擊導(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]-->在項目-》屬性-》構(gòu)建路徑中添加外部 jar的引用,也就是上面幾個 jar

          <!--[if !supportLists]-->8.?????? <!--[endif]-->建立一個數(shù)據(jù)庫 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 要更改此生成的文件的模板,請轉(zhuǎn)至

          ?* 窗口首選項 Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

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

          ?* 窗口首選項 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 要更改此生成的文件的模板,請轉(zhuǎn)至

          ?* 窗口首選項 Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

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

          ?* 窗口首選項 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)自動產(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 要更改此生成的文件的模板,請轉(zhuǎn)至

          ?* 窗口首選項 Java 代碼樣式代碼模板

          ?*/

          ?

          /**

          ?* @author Administrator

          ?*

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

          ?* 窗口首選項 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() 來調(diào)試各種情況,包括插入數(shù)據(jù),查詢一條數(shù)據(jù),查詢多條數(shù)據(jù)。

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

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

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

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

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

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

          ?

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

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(2)

          隨筆分類(31)

          隨筆檔案(30)

          文章分類(32)

          文章檔案(33)

          相冊

          PHP小站-首頁

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 赫章县| 马鞍山市| 遵义县| 北海市| 紫阳县| 平阴县| 江安县| 乌鲁木齐县| 临江市| 灯塔市| 巴彦县| 通州市| 霸州市| 牡丹江市| 大余县| 如东县| 准格尔旗| 吴忠市| 县级市| 南部县| 讷河市| 徐水县| 大渡口区| 海林市| 扎囊县| 芦溪县| 甘肃省| 兰考县| 清涧县| 武邑县| 自贡市| 怀来县| 句容市| 泸溪县| 绥德县| 涞水县| 黄骅市| 安新县| 五峰| 牙克石市| 方山县|