MyBatis 用注解好还是用 XML 好?

本贴最后更新于 594 天前,其中的信息可能已经时移世改

MyBatis 支持注解 SQL 语句,如:

package com.iandtop.jxy.mapper;

import com.iandtop.saas.smartpark.vo.UserVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author andyzhao
 */
@Mapper
public interface LoginMapper {

@Select("select count(*) from sm_user")
    Integer retrieveAllCount() throws RuntimeException;

    @Select("select * from sm_user WHERE user_password = #{password} and user_code = #{code}")
    List<UserVO> retrieveByCodeAndPwd(@Param("code") String code, @Param("password") String password) throws RuntimeException;

    @Select("select * from sm_user WHERE user_code = #{code}")
    List<UserVO> retrieveByCode(@Param("code") String code) throws RuntimeException;

    @Select("SELECT * FROM SM_USER WHERE pk_user = #{pk_user}")
    UserVO findByPK(@Param("pk_user") String pk_user);
}

但是常用的还是 XML 方式,比如:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.iandtop.jxy.mapper.LoginMapper">

    <select id="retrieveAllCount" resultType="java.lang.Integer">
        select count(*) from sm_user
    </select>
    <select id="retrieveByCodeAndPwd" resultType="com.iandtop.saas.smartpark.vo.UserVO">
        select * from sm_user WHERE user_password = #{password} and user_code = #{code}
    </select>
    <select id="retrieveByCode" resultType="com.iandtop.saas.smartpark.vo.UserVO">
        select * from sm_user WHERE user_code = #{code}
    </select>
</mapper>

到底选哪一种呢?我选 XML:

  1. 首先官方也是推荐使用 XML
  2. 注解方式拼接动态 SQL 功能有限
  3. Java 又和 SQL 搞到一起了感觉很不爽

网上有说“按需使用",大致意思就是说如果”复杂“就用 XML,剩下的就用注解。那为什么这么复杂,干嘛不干脆用 XML 就得了?

网上有说“注解和 xml 的一起使用”,大致就是一个工程一会用注解一会用 XML。那为什么这么复杂,干嘛不干脆用 XML 就得了?

总结:

  1. 注解也许有很多优点,但是哪位同胞可以好心告诉我下?
  2. Java 各个框架太多,能简洁干嘛要复杂?我就奇了怪了。如果整天只是满脑子的各种框架的使用和配置方法那真是弱爆了。
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 Google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    153 引用 • 404 回帖 • 687 关注
  • 注解
    9 引用 • 22 回帖
  • XML
    26 引用 • 59 回帖

赞助商 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 88250

    赞同,我也觉得统一用 XML 最好!

  • lijp

    项目中一直用的 XML

  • xiaomogu

    XML、维护方便。

  • Eddie
    捐赠者

    XML

  • eddy

    习惯 XML,一般使用 XML。
    但有人认为使用注解可以做到抽象 base SQL。
    个人喜欢分开

  • yangyujiao

    我也觉得 XML 好,方便,而且复杂 SQL 也好处理。
    可是现在项目他们偏偏要用注解,,,搞的乱七八糟的。
    而且我问他们注解比 XML 的好处在哪里???告诉我说有些简单的 SQL 可以不用写了。。。关键是 哪有那么多简单的,多数都是多表查询,本来我们就是做后台管理系统。。。
    另外,XML 也可以先自动把 SQL 都生成呀,,,那些简单的 基本也可以用。 对不。

  • vickllny

    XML 好呀 当面对很长的 SQL 的时候 拼接 SQL 会爆炸的

  • ny53676314

    XML 好维护

  • javmain

    本人感觉也是 XML 好吧。

  • ql562482472

    可是我还是喜欢用注解
    项目不使用任何关联查询,所有的逻辑都放在 Java 处理
    不喜欢配置文件到处都是
    如果非要一个理由 大概就是简洁把

请输入回帖内容 ...