<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成人无码网站| 日韩毛片免费无码无毒视频观看| 亚洲高清无在码在线无弹窗 | 亚洲好看的理论片电影| 在线看片免费人成视频福利| 在线A亚洲老鸭窝天堂| 中国内地毛片免费高清| 亚洲AV永久青草无码精品| 国产高清不卡免费视频| 久久精品国产亚洲77777| 免费精品国产自产拍在| 亚洲a视频在线观看| 免费观看理论片毛片| 亚洲妇女无套内射精| 亚洲欧洲自拍拍偷精品 美利坚| 一级午夜免费视频| 久久久久亚洲AV成人无码网站| 亚洲综合免费视频| 亚洲av无码一区二区三区网站 | 成人最新午夜免费视频| 亚洲AV日韩AV一区二区三曲| 亚洲成人国产精品| 日韩免费观看一区| 亚洲一日韩欧美中文字幕在线| 无码欧精品亚洲日韩一区夜夜嗨| 中文字幕免费视频精品一| 亚洲色欲或者高潮影院| 性做久久久久免费看| 国产精品永久免费视频| 亚洲高清免费在线观看| 免费国内精品久久久久影院| 国产自国产自愉自愉免费24区| 亚洲中文无码av永久| 免费一级毛片在线播放| 100部毛片免费全部播放完整| 亚洲av无一区二区三区| 亚洲AV综合色区无码一区| 99精品全国免费观看视频| 国产VA免费精品高清在线|