mybatis 同时使用 XML 和注解
引言
学过 MyBatis 框架的童靴都知道, MyBatis 支持 XML 和注解两种方式配置,如下:
使用 XML 方式配置
只写明 XML 的 resource 路径(或者URL路径)
<mappers>
<mapper resource="com/UserMapper.xml"/>
</mappers>
使用注解方式配置
只写明注解Mapper的类全路径名(这种方式只适合于只包含注解的配置)
<mappers>
<mapper class="com.UserMapper"/>
</mappers>
我们知道,以上 XML 和注解方式各有利弊;有的童靴可能会想,那能不能 XML 和注解这两种方式一起用,这样可以尽量发挥各自的长处。答案是 MyBatis 可以同时使用 XML 和注解两种方式配置。
同时使用 XML 和注解方式配置(不同映射器接口类)
<mappers>
<mapper resource="com/GameMapper.xml"/>
<mapper class="com.UserMapper"/>
</mappers>
可以看到,以上两种方式配置是针对不同的映射器接口类。那么,是否可以在同一个映射接口类中同时使用 XML 和注解方式呢?答案依然是可以。
同时使用 XML 和注解方式配置(同一映射器接口类)
<mappers>
<mapper class="com..UserMapper"/>
<mapper resource="com/UserMapper.xml"/>
</mappers>
- 这种方式一定要把类的配置写在 XML 的配置之前。
因为先解析完 mapper 之后,可以继续解析 xml,解析 xml 时如果判断 mapper 解析过之后则不会重复解析也不会抛错,但是如果先解析 xml,会向Configuration 中注册 Mapper,当之后解析 Mapper 时如果检测到有加载过则会抛出异常并终止程序创建 SqlSessionFactory。
- 不允许对一个方法既XML 配置又注解,这会报错。
因为在解析每个 sqlmap 的时候会给其生成唯一的 ID,并存入 MapperRegistry 中,这个注册中心本质上是一个 HashMap,且不允许插入已经存在的 key 值,做插入操作时如果检测到已存在同名ID就会报错终止解析。
mybatis 同时使用 XML 和注解的更多相关文章
- Mybatis之XML、注解
前言 上篇简单介绍了Mybatis的简单实用,本篇先对上次实验环境的一些内容进行优化,然后验证Mybatis的XML配置以及注解方式. 实验环境优化 数据库配置 在mybatis的配置文件中,引入数据 ...
- MyBatis笔记----MyBatis数据库表格数据修改更新的两种方法:XML与注解
继上 http://www.cnblogs.com/tk55/p/6659285.html http://www.cnblogs.com/tk55/p/6660477.html 注解 将id:8 na ...
- MyBatis笔记----MyBatis查询表全部的两种方法:XML与注解
查询单条信息的在 http://www.cnblogs.com/tk55/p/6659285.html 已经有了 XML 修改UserMapper.xml <?xml version=&quo ...
- 关于Mybatis中Mapper是使用XML还是注解的一些思考
XML 据说可以灵活的进行注解,但是修改以后还是要重新发布程序.当然,你可以说,在Tomcat中改了,然后热加载了,不就可以了.可是一般情况下都是几台,十几台服务器.都是用发布系统,持续集成的方式部署 ...
- MyBatis 使用简单的 XML或注解用于配置和原始映射
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .My ...
- springboot使用Mybatis(xml和注解)全解析
刚毕业的第一份工作是 java 开发,项目中需要用到 mybatis,特此记录学习过程,这只是一个简单 demo,mybatis 用法很多不可能全部写出来,有更复杂的需求建议查看 mybatis ...
- mybatis开发,你用 xml 还是注解?我 pick ...
最近在看公司项目时发现有的项目mybatis是基于注解开发的,而我个人的习惯是基于xml文件开发. 对于mybatis注解开发的原理理解不够,于是翻阅了部分源码,写下此文.主要介绍了mybatis开发 ...
- MyBatis 项目开发中是基于 XML 还是注解?
只要你对 MyBatis 有所认识和了解,想必知道 MyBatis 有两种 SQL 语句映射模式,一种是基于注解,一种是基于XML. 基于 XML <mapper namespace=" ...
- mybatis学习一:基于xml与注解配置入门实例与问题
注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...
随机推荐
- Spring Cloud微服务限流之Sentinel+Apollo生产实践
Sentinel概述 在基于Spring Cloud构建的微服务体系中,服务之间的调用链路会随着系统的演进变得越来越长,这无疑会增加了整个系统的不可靠因素.在并发流量比较高的情况下,由于网络调用之间存 ...
- PBRT阅读笔记——COLOR AND RADIOMETRY
四个关键概念 Energy(Q) 每一个光子都有特定的波长并携带特定的能量: 其中c为光速,h为普朗克常量. Flux(Φ) 辐射通量,可以直观理解为功率.是能量对时间微分得到的 ...
- IDEA中Maven本地仓库与镜像配置
1 Maven Maven是一个用于项目构建与管理的工具,IDEA自带了Maven,在安装目录下的 plugins\maven\lib\maven3 IDEA也可以集成使用非自带的Maven,也就是自 ...
- Day03_17_数组
数组 什么是数组? 数组是多个相同类型数据按照一定顺序排列的有序集合,并使用一个名字命名,通过编号的方式,对这些数据进行统一的管理. 数组也是对象,数组中的元素相当于数组对象的成员变量 数组的长度是固 ...
- 探秘神奇的运动路径动画 Motion Path
CSS 中有一个非常有意思的模块 -- CSS Motion Path Module Level 1,翻译过来也就是运动路径.本文将对 motion path 一探究竟,通过本文,你可以了解到: 什么 ...
- Java集合知识总结
集合概述 集合:集合是Java中提供的一种容器,可以用来存储多个数据. 集合和数组的区别: (1)数组长度的是固定的,集合的长度是可变的. (2)数组中存储的都是同一类型的元素.集合存储的都是对象,对 ...
- 命令行运行py文件报错
起因 今天用ubuntu 终端运行py文件报了个错,找不到模块? 我切换回pycharm中运行,运行一切正常 解决 在报错模块中,插入绝对路径 import sys sys.path.append(' ...
- php变量的命名规则
php变量的命名规则 1.变量以美元符号$开头.如$name,$age: 2.美元符号$后面的第一个字符不可以是数字: 3.除了下划线_外,变量不允许出现任何空格或者标点符号: 4.PHP变量名是区分 ...
- 从苏宁电器到卡巴斯基(后传)第03篇:我与鱼C论坛的是是非非
前言与铺垫 当我刚读研一的时候,对自己的未来还是非常迷茫的.尽管我读的是数字媒体技术专业,但是我对这一行根本就不感兴趣,对于平面设计.三维建模以及游戏引擎的使用这一类知识根本就不会,也不太想学(由于我 ...
- HarmonyOS三方件开发指南(19)-BGABadgeView徽章组件
目录: 1.引言 2.功能介绍 3.BGABadgeView 使用指南 4.BGABadgeView 开发指南 5.<HarmonyOS三方件开发指南>系列文章合集 引言 现在很多的APP ...