亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

iBatis: 又一個O/R Mapping方案

2019-11-18 16:08:42
字體:
來源:轉載
供稿:網友

  iBatis是又一個O/R Mapping解決方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特點就是小巧,上手很快。如果你不需要太多復雜的功能,iBatis是能滿足你的要求又足夠靈活的最簡單的解決方案。

iBatis最大的特點是簡單,最新版本2.0(下載),和1.0相比,主要改動在xml配置文件上,不過,只要有SQL基礎,相信你不用教程也能看明白。下面我們看一個最簡單的例子入門。

我們先建一個表Account,包括字段username, varchar(20), pk和passWord, varchar(20),隨便填入一些數據。然后編寫iBatis必須的配置文件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>
  <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="sun.jdbc.odbc.JdbcOdbcDriver"/>
      <property name="JDBC.ConnectionURL" value="jdbc:odbc:Blog"/>
      <property name="JDBC.Username" value="admin"/>
      <property name="JDBC.Password" value=""/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="Account.xml" />
</sqlMapConfig>

其他部分你不用管它,我是直接copy的示例配置,只需注意紅色部分,配置好數據源即可。我用的是access,所以用JdbcOdbc驅動。如果你用MySQL或其他數據庫,更改相應的屬性。

然后注意到這個配置文件還引用了一個Account.xml,沒錯,iBatis把每個需要O/R Mapping的java對象關聯到一個xml配置文件,我們需要把一個Account表映射到一個Account類:

package example;
public class Account {
    private String username;
    private String password;

    public String getUsername() { return username; }
    public void setUsername(String username) { this.username=username; }

    public String getPassword() { return password; }
    public void setPassword(String password) { this.password=password; }
}

編寫Account.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="Account">

  <select id="getAccount" parameterClass="java.lang.String" resultClass="example.Account">
    select * from Account where username = #value#
  </select>

  <insert id="createAccount" parameterClass="example.Account">
    insert into Account (username, password)
    values ( #username#, #password# )
  </insert>
</sqlMap>

我們主要關心紅色部分。以<select ...>為例,這里定義了一個查詢方法,名字為getAccount,傳入參數為String,返回類型resultClass就是example.Account類,select語句相信你已經很熟悉了,#value#是我們將要傳進去的String。

<insert...>與之類似,不過注意到#username#和#password#,由于參數是Account類,它們將被Account.getUsername()和Account.getPassword()替換。所以,只要你會寫SQL,就能非常容易地寫出配置文件。

最后便是如何使用iBatis實現O/R映射。首先初始化iBatis獲得一個SqlMapClient對象:

    com.ibatis.sqlmap.client.SqlMapClient sqlMap = null;
    try {
        java.io.Reader reader = om.ibatis.common.resources.Resources.getResourceAsReader ("sql-map-config.xml");
        sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    } catch (Exception e) {
        e.printStackTrace();
    }

然后就可以異常方便地使用O/R Mapping了,比如查詢username=admin的Account:

    try {
        Account accout = (Account)sqlMap.queryForObject("getAccount", "admin");
        ...
    }

或者創建一個新的Account:

    try {
        Account account = new Account();
        account.setUsername("micheal");
        account.setPassword("1234");
        sqlMap.insert("createAccount", account);
    }

運行時把兩個配置文件和iBatis的3個jar包放到classpath中,要求jdk1.4版本。

總結:iBatis確實簡單靈活,上手容易,代碼很少,配置稍嫌復雜。不足之處一是沒有方便的工具來自動生成xml配置文件,二是不管是query還是insert都只能傳入一個參數,有時不得不把兩個參數包裝成一個類傳進去。另外對常見的1:1,1:N關系的支持不如Hibernate。不過,大多數時候iBatis已經完全可以滿足我們的需求。Spring很好的集成了iBatis,你可以參考Spring的JPetStore示例。需要注意的是使用iBatis 2.0和1.0有較大區別,主要體現在配置文件上,iBatis 2.0新增了DAO框架,不需要Spring提供的DAO也能很方便地實現DAO模式。


(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级大胆视频| 深夜精品寂寞黄网站在线观看| 日本久久久久久久| 怡红院精品视频| 亚洲精品videossex少妇| 国产精品xxxxx| 欧美孕妇与黑人孕交| 久久久人成影片一区二区三区| 日韩av在线导航| 日韩在线免费视频| www.亚洲人.com| 日韩成人在线播放| 亚洲第五色综合网| 7m精品福利视频导航| 欧美日韩激情视频8区| 在线精品视频视频中文字幕| 中文字幕亚洲二区| 亚洲精品成人网| 日韩美女福利视频| 深夜福利国产精品| 亚洲白拍色综合图区| 国产不卡av在线| 美女扒开尿口让男人操亚洲视频网站| 欧美成人合集magnet| 国产日韩在线免费| 日韩亚洲综合在线| 国产精品高清网站| 欧美成人激情图片网| 国产精品久久久久久久久久99| 最近2019中文字幕大全第二页| 中文字幕精品视频| 欧美精品在线视频观看| 日韩av网址在线观看| 青青精品视频播放| 懂色aⅴ精品一区二区三区蜜月| 国产精品久久激情| zzijzzij亚洲日本成熟少妇| 国产一区二区三区毛片| 亚洲石原莉奈一区二区在线观看| 亚洲欧美日韩视频一区| 91精品国产综合久久香蕉最新版| 欧美一区在线直播| 亚洲一区二区黄| 免费av在线一区| 日韩av黄色在线观看| 成人国产精品日本在线| 日本精品一区二区三区在线| 国产成人免费av电影| 欧美激情国产精品| 性色av一区二区三区免费| 久久久成人的性感天堂| 亚洲午夜女主播在线直播| 久久男人资源视频| 岛国av在线不卡| 97在线免费视频| 久久99精品久久久久久噜噜| 国产成人极品视频| 日韩成人网免费视频| www.久久撸.com| 精品久久中文字幕久久av| 国产成人精品久久二区二区| 成人黄色在线播放| 日韩av在线导航| 成人激情视频在线观看| 国产精品一区av| 国产福利视频一区二区| 欧美国产日本高清在线| 91在线视频成人| 亚洲精品自拍第一页| 精品视频在线播放| 亚洲精品在线视频| 中日韩美女免费视频网站在线观看| 国产欧美最新羞羞视频在线观看| 久久99青青精品免费观看| 欧美性xxxx极品高清hd直播| 在线一区二区日韩| 国产综合在线看| 欧美日本高清视频| 日韩av最新在线观看| 成人精品网站在线观看| 2019中文字幕全在线观看| 色综合天天狠天天透天天伊人| 久久中文精品视频| 午夜精品一区二区三区在线| 亚洲最新视频在线| 成人免费激情视频| 亚洲男人第一网站| 欧美丝袜美女中出在线| 久久久免费精品| 成人av在线天堂| 一区二区中文字幕| 亚洲日本aⅴ片在线观看香蕉| 国产91免费观看| 狠狠做深爱婷婷久久综合一区| 亚洲视频综合网| 亚洲视频在线观看视频| 欧美精品一区在线播放| 中文字幕欧美日韩va免费视频| 国产精品黄色影片导航在线观看| 亚洲国产黄色片| 日韩在线www| 日本亚洲欧洲色α| 欧美视频二区36p| 91久久国产综合久久91精品网站| 久久久精品欧美| 久久精品久久久久| 欧美福利视频网站| 色偷偷综合社区| 亚洲欧美日韩第一区| 日韩在线免费视频观看| 美日韩精品免费观看视频| 国产精品网站入口| 中文字幕亚洲一区二区三区五十路| 在线精品视频视频中文字幕| 亚洲激情自拍图| 久久亚洲综合国产精品99麻豆精品福利| 亚洲精品视频在线播放| 国产亚洲美女久久| 热re99久久精品国产66热| 久久99国产精品自在自在app| 国产成人极品视频| 色yeye香蕉凹凸一区二区av| 亚洲第一区中文99精品| 日韩av电影中文字幕| 国产精品高清免费在线观看| 色悠悠久久88| 欧美成人精品激情在线观看| 78色国产精品| 久久这里有精品| 日韩精品视频在线观看网址| 国产aⅴ夜夜欢一区二区三区| 4388成人网| 亚洲国产天堂久久综合网| 欧美综合国产精品久久丁香| 久久久国产一区二区| 国产精品视频999| 亚洲精品视频久久| 国产亚洲a∨片在线观看| 亚洲综合社区网| 国产69精品久久久久9| 亚洲人成网7777777国产| 欧美精品在线看| 日韩av男人的天堂| 狠狠躁夜夜躁人人爽天天天天97| 亚洲日本成人女熟在线观看| 人九九综合九九宗合| 亚洲人成电影在线| 九九热精品视频| 97国产在线观看| 色老头一区二区三区在线观看| 成人黄色大片在线免费观看| 亚洲国产精品电影| 成人免费观看49www在线观看| 久久手机免费视频| 日本久久久久久久久| 欧美性猛xxx| 亚洲欧美制服中文字幕| 庆余年2免费日韩剧观看大牛| 久久久精品国产| 中文字幕在线看视频国产欧美在线看完整| 欧美一级电影在线| 日韩中文字幕在线精品| 欧美日韩国产丝袜另类| 日韩av在线精品|