MyBatis 項目開發中是基於 XML 還是注解?


只要你對 MyBatis 有所認識和了解,想必知道 MyBatis 有兩種 SQL 語句映射模式,一種是基於注解,一種是基於XML

  • 基於 XML
<mapper namespace="mapper.UserMapper">
    <!--結果集映射(ORM)-->
    <resultMap id="userResultMap" type="entity.UserEntity">
        <!-- propery表示UserEntity屬性名,column表示tb_user表字段名-->
        <id property="id" column="id" />
        <result property="userName" column="user_name" />
        <result property="password" column="password" />
        <result property="name" column="name" />
        <result property="age" column="age" />
        <result property="sex" column="sex" />
        <result property="birthday" column="birthday" />
        <result property="created" column="created" />
        <result property="updated" column="updated" />
    </resultMap>

    <!--select查詢語句 id表示接口方法名 resultMap表示引用結果集映射-->
    <select id="selectUserByAge"  resultMap="userResultMap">
        select * from tb_user where age > #{age}
    </select>
</mapper>
  • 基於注解
@Select("select * from tb_user where age > #{age}")
@Results(value = {
            @Result(property = "id",column = "id",id = true),
            @Result(property = "userName",column = "userName"),
            @Result(property = "password",column = "password"),
            @Result(property = "name",column = "name"),
            @Result(property = "sex",column = "sex"),
            @Result(property = "age",column = "age"),
            @Result(property = "birthday",column = "birthday"),
            @Result(property = "created",column = "created"),
            @Result(property = "updated",column = "updated")
 })
 public List<UserEntity> selectUserByAge(@Param("age") int age);

以上兩種方式效果是相同的,為此很多缺乏項目經驗的 MyBatis 初學者就會產生一個疑問,那就是 MyBatis 在實際項目開發中到底是基於 XML 還是注解模式開發

這個問題如果你上網百度一下,會得到很多不同的回答,有支持 XML 的,有支持注解的,有支持混用的,總是這讓初學者更感到困惑了。

其實,這個問題很簡單,初學者壓根沒有必要在那里糾結。

因為實際項目開發中,選擇何種模式開發,並沒有統一的標准,也根本不取決於你,最終取決於你的團隊,更具體說是項目經理或技術精英。

你想一想,作為一個剛入行的程序員,怎么也輪不到你在項目中指手畫腳呀。

不過,如果你是一個求知欲極強,凡事總要打破砂鍋問到底的初學者,請跟我來探究一下這個問題。

首先,我們知道 XML 和注解只是 SQL 語句映射的兩種方式而已,效果都是相同的;但是,這二者之間還是存在一些差異或區別。

想一想,MyBatis 框架開發者為何要設計兩種映射模式呢?目的肯定是為了追求靈活性,增強場景適應性,也給使用者更多的選擇空間。這就意味着,這二者之間自身各有優缺點

注解模式與 XML 模式對比

  • 注解模式

    優勢:開發速度快,開發量小

    劣勢:難以線上維護(每次修改 SQL 語句都需要重新打包)

  • XML 模式

    優勢:便於線上維護(每次修改 SQL 語句不需要重新打包)

    劣勢:開發速度慢,開發量大

另外,注解模式開發速度快僅限於簡單 SQL 語句處理,比如單表 CURD 操作之類。對於復雜的 SQL 語句處理,注解模式就顯得有點力不從心,而且會帶來混亂。

問題總結

所以,通過注解模式和 XML 模式的對比,我們可以知道在實際項目開發中,由於考慮便於線上維護以及 SQL 語句的復雜度,一般都會使用 XML 模式;而且有 MyBatis Generator 插件工具可以輔助自動生成 XML 映射文件,大大提高了開發效率。

當然,也可以采用 XML 模式與注解模式混用,也就是簡單 SQL 語句采用注解模式,復雜 SQL 語句采用 XML 模式。


免責聲明!

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



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