Mybatis注解開發之@Results


寫在前面:在使用mybatis注解開發的時候,數據庫返回的結果集和實體類字段不對應,我們就需要手動指定映射關系;

                 一種是使用在xml文件中指定resultMap,指定id,下面需要的直接引用id就可以;

                 另一種在使用注解開發的時候,我們只能通過注解@Results來指定對應關系了,那么注解只能每個方法用到了都得復制一遍@Results嗎?答案當然不是,注解@Results中提供了id屬性這就跟xml文件中的id作用一樣,下面引用的話可以用@ResultMap來引用。

        首先說明一下@Results各個屬性的含義,id為當前結果集聲明唯一標識,value值為結果集映射關系,@Result代表一個字段的映射關系,column指定數據庫字段的名稱,property指定實體類屬性的名稱,jdbcType數據庫字段類型,@Result里的id值為true表明主鍵,默認false;使用@ResultMap來引用映射結果集,其中value可省略。

聲明結果集映射關系代碼:

@Select({"select id, name, class_id from my_student"})
@Results(id="studentMap", value={
    @Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
    @Result(column="name", property="name", jdbcType=JdbcType.VARCHAR),
    @Result(column="class_id ", property="classId", jdbcType=JdbcType.INTEGER)
})
List<Student> selectAll();

引用結果集代碼:

@Select({"select id, name, class_id from my_student where id = #{id}"})
@ResultMap(value="studentMap")
Student selectById(integer id);

這樣我們就不用每次需要聲明結果集映射的時候都復制冗余代碼,簡化開發,提高了代碼的復用性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM