zoukankan      html  css  js  c++  java
  • 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 模式。

    作者:Binge
    本文版权归作者和博客园共有,转载必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    转: CvMat,Mat和IplImage之间的转化和拷贝
    Scrapy 轻松定制网络爬虫
    榆林暑期见习
    文学
    浅析Redis实现lock互斥访问资源
    使用Maven构建Java项目
    正则表达式
    CSS 命名规范及标题供参考与学习
    从零开始在linux下搭建wordpress博客
    python2和python3的区别
  • 原文地址:https://www.cnblogs.com/binbingg/p/13796239.html
Copyright © 2011-2022 走看看