<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數據加載中……

    iBatis Java Mapper--A iBatis+Spring擴展 (ZT)


    轉載自 http://m.tkk7.com/xmatthew/archive/2009/01/05/249986.html

    iBatis Java Mapper是iBatis+Spring的一個擴展,能夠讓你使用Java類和接口來代替用于object-SQL映射的XML文檔。

    官方網址:http://javamapper.sourceforge.net/
    目前還沒有正式發布版本,但很值得期待。

    下面是一個示例:

    第一步把iBatis Java Mapper實現類,配置到Spring容器中。如下:
    @ResultMap {
    public class Account {

            
    private String username;
            
    private String email;

            @Result(column
    ="userid", groupBy=true)
            
    public String getUsername();
            
            @Result(column
    ="email")
            
    public String getEmail();
            
            
    // Setters 
    }


    更多示例:

    Creating Mapped Statements

    iBatis Java Mapper uses methods to map statements. Statement methods can be in classes and interfaces with or without the @ResultMap annotation, it doesn't matter. Methods are used for statement mapping if they are annotated with @Select, @Insert, @Update or @Delete.

    Here is an example of a mapped select statement:

    @Select("select username as value from signon")

    public abstract String getUsernameList();

    In this case the SQL is provided as the value of the @Select annotation. It is also possible to use a properties file to hold the SQL if you don't want it in the Java source. The properties file's path and name must match the class/interface full name, for example if the class containing the mapper method is named foo.bar.MapperClass , then its matching properties file must be /foo/bar/MapperClass.properties。The entry key is the method name and the entry value is the SQL:

    getUsernameList = select username as value from signon

    Now we can write the annotation without the SQL:

    @Select
    public abstract String getUsernameList();

    Let's take a look at the method signiture and see what iBatis Java Mapper can learn from it about the required mapping. The return type is String , so this is the class which is used as the statement result class. Now let's look at another example:

    @Select(resultClassMapper=AccountMapper.class)
    public abstract Account getAccountByUsernameAndPassword(Account account);

    Here the annotation specifies the class that contains the result map definition. In this case the return value is ignored, but we left it as sort of self-documenting code. This method also has an argument of type Account , so Account is used as parameterClass. If a method has more than one argument, iBatis Java Mapper uses the first one as parameter class and ignores the rest.

    Mapping of insert, update and delete statements is similar and even a little simpler. Here are some examples:

    @Insert
    public abstract void insertProfile(Account account);

    @Update
    public abstract void updateProfile(Account account);

    @Delete
    public abstract void deleteProfile(Account account);



    posted on 2009-04-15 16:46 風人園 閱讀(383) 評論(0)  編輯  收藏 所屬分類: Open Source

    主站蜘蛛池模板: 精品国产免费一区二区三区香蕉 | 亚洲一区二区影院| 亚洲av无码专区在线播放| 亚洲大香伊人蕉在人依线| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲日韩一中文字暮| 国产精品亚洲专区无码不卡| www免费黄色网| 老司机在线免费视频| 亚洲免费无码在线| 亚洲一级在线观看| 国产美女视频免费观看的网站| 91精品免费久久久久久久久| 啊v在线免费观看| 亚洲第一视频网站| 免费福利资源站在线视频| 日本阿v免费费视频完整版| 亚洲人精品亚洲人成在线| 精品成人免费自拍视频| 亚洲精品美女视频| 男人j进入女人j内部免费网站 | 中文字幕在线亚洲精品| 色婷五月综激情亚洲综合| 曰批全过程免费视频在线观看无码| 四虎永久免费网站免费观看| 亚洲国产成人精品无码区在线秒播| 二个人看的www免费视频| 国产jizzjizz视频全部免费| 一区二区三区免费看| 国产91在线免费| 久久国产乱子伦精品免费强| 91亚洲精品视频| 中文字幕天天躁日日躁狠狠躁免费| 亚洲精品无码成人AAA片| 色噜噜狠狠色综合免费视频 | 免费一级毛片清高播放| 人妻在线日韩免费视频| 国产午夜亚洲精品| 久久久久亚洲精品天堂久久久久久 | 久久精品国产亚洲Aⅴ香蕉 | 国产在线观看免费视频播放器 |