最近在使用MyBatis3做项目。在使用注解实现Mapper的时候遇到了比较奇葩的问题:在实现数据的batch insert的时候总是报错。好不容易可以正常插入了,但是又不能返回自增的主键id到实体bean中了。而这些问题在XML配置中都不存在。一方面可能是我能力有限,没有找到合适的解决方案;另一方面可能与MyBatis自身对Java中注解的支持不够给力有关系。

以下是MyBatis官网对Mapper Annotations的解释:

Mapper Annotations

Since the very beginning, MyBatis has been an XML driven framework. The configuration is XML based, and the Mapped Statements are defined in XML. With MyBatis 3, there are new options available. MyBatis 3 builds on top of a comprehensive and powerful Java based Configuration API. This Configuration API is the foundation for the XML based MyBatis configuration, as well as the new Annotation based configuration. Annotations offer a simple way to implement simple mapped statements without introducing a lot of overhead.

NOTE : Java Annotations are unfortunately limited in their expressiveness and flexibility. Despite a lot of time spent in investigation, design and trials, the most powerful MyBatis mappings simply cannot be built with Annotations – without getting ridiculous that is. C# Attributes (for example) do not suffer from these limitations, and thus MyBatis.NET will enjoy a much richer alternative to XML. That said, the Java Annotation based configuration is not without its benefits.

翻译:
(最初MyBatis是基于XML驱动的框架。MyBatis的配置是基于XML的,语句映射也是用XML定义的。对于MyBatis3,有了新的可选方案。MyBatis3 是建立在全面且强大的Java配置API之上的。 该配置API是MyBatis基于XML配置的基础,也是基于注解配置的基础。注解提供了简单的方式去实现简单的映射语句,不需要花费大量的开销。
注意:很不幸的是,java注解在表现和灵活性上存在限制。虽然在调研、设计和测试上花费了很多时间,但是最强大的MyBatis映射功能却无法用注解实现。这没有什么可笑的。举例来说,C#的特性就没有这个限制,所以MyBatis.NET 能拥有一个功能丰富的多的XML替代方案。所以,Java基于注解的配置是依赖于其自身特性的。)
http://www.mybatis.org/mybatis-3/java-api.html
所以,我最终决定不使用注解来实现Mapper了,换成XML。虽然麻烦一点,但起码会少一些奇葩问题出现。问题少也是提高效率的一个方面啊(伤心)。

我为什么放弃使用MyBatis3的Mapper注解相关推荐

  1. MyBatis中的@Mapper注解及配套注解使用详解

    https://blog.csdn.net/phenomenonstell/article/details/79033144 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写 ...

  2. MyBatis中的@Mapper注解使用

    前言:从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件. Mapper作用 作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类 添加位 ...

  3. MyBatis_通用mapper注解开发

    文章目录 9. 通用mapper注解开发 9.1. 通过mapper入门案例 9.1.1. 添加mapper依赖 9.1.2. 相关配置文件 - jdbc.properties - mybatis-c ...

  4. mapper注解的主要作用_Mybatis中mapper的xml解析详解

    上一篇文章分析了mapper注解关键类MapperAnnotationBuilder,今天来看mapper的项目了解析关键类XMLMapperBuilder. 基础介绍 回顾下之前是在分析config ...

  5. SpringBoot中使用@Mapper注解需要哪个包

    场景 在Eclipse中新建springBoot项目后,要使用@Mapper注解. 实现 打开pom.xml 添加 <!-- mybatis整合Springboot --><depe ...

  6. SpringBoot2.1.9 Mybatis由于@Mapper注解多数据源配置不生效问题

    一.场景复现 (1)项目 目录 配置文件 spring:application:name: multi-datasourceprofiles:active: dev1datasource:type: ...

  7. 关于@Mapper注解的几个问题

    本文来说下关于@Mapper注解的几个问题 文章目录 @Mapper注解 @MapperScan注解 使用@MapperScan注解多个包 @MapperScan注解扫描非启动类下面的包 本文小结 @ ...

  8. @mapper注解的使用_SpringBoot-Mybatis通用mapper使用

    mybatis是一个很好用的工具,但是编写mapper是一件很麻烦的事,自mybatis 3.0开始可以使用注解的方式,极大的简化了xml的编写量,本地想看看mybatis源码,自己扩展写一个工具,在 ...

  9. 通用Mapper注解方式实现动态SQL

    1.通用Mapper注解方式实现动态SQL 注意:使用动态SQL后,不能使用分页助手,需要手动写分页SQL 对应的mapper接口实现SelectMapper接口 在对应的mapper接口中的方法上

  10. @Mapper注解学习

    @Mapper 是 Mybatis 的注解,和Spring没有关系.@Mapper注解的的作用 1:为了把mapper这个DAO交給Spring管理,参考 http://412887952-qq-co ...

最新文章

  1. 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...
  2. apache activemq ActiveMQ 修改密码
  3. win10任务管理器快捷键_win10系统任务管理器怎么打开
  4. CoreJava 笔记总结-第五章 继承
  5. Android笔记 采用async http 框架 提交数据到服务器demo
  6. 分治法的关键特征_经典算法思想2——分治(Divide-and-Conquer)
  7. 解開被封印的 macOS High Sierra 暗黑模式 功能
  8. 为什么base64编码的字符串的末尾有=符号
  9. L1-050 倒数第N个字符串 (15 分)—团体程序设计天梯赛
  10. 2021日喀则市江孜高考成绩查询,2021西藏高考成绩查询时间 西藏高考成绩查询入口...
  11. windows环境下zookeeper做成服务并启动
  12. 实现财务自由的十大步骤
  13. 2022华为机试真题 C++ 实现【九宫格按键输入法】
  14. Windows 10 下生成 ssh 密钥
  15. 双硬盘win10下安装ubuntu的方法
  16. 电信行业用户流失预测——你的用户会流失吗?
  17. A PM2.5 concentration estimation method based on multi-feature combination of image patches文章详解
  18. 初学者都能看懂的 Spring 源码之依赖注入(DI)源码分析
  19. 2.控制结构(选择、循环)
  20. PTA题目——奇偶分家

热门文章

  1. Jmeter及JDK下载安装配置教程
  2. Android跑马灯的效果
  3. jenkins连接Linux
  4. Dev C++使用简明教程
  5. wpe封包修改服务器数据,WPE修改基础第三课:封包的基本知识
  6. Ubuntu 14.04LTS 环境下安装UliPad
  7. 在html中滚动条显示的属性,html滚动条textarea属性设置本 textarea怎么显示滚动条...
  8. 3S基础知识:用MapX快速开发
  9. 易语言计算机代码,易语言基础教程之简单代码的编写
  10. 天翼校园客户端“中毒”,江苏、广东、湖南成重灾区