关于Mybatis中Mapper是使用XML还是注解的一些思考
XML 据说可以灵活的进行注解,但是修改以后还是要重新发布程序。当然,你可以说,在Tomcat中改了,然后热加载了,不就可以了。可是一般情况下都是几台,十几台服务器。都是用发布系统,持续集成的方式部署。这点灵活性也就没什么意义了。当然,一定要说XML支持好,这点我不否认。然而在注解中支持了大部分功能,如果实在复杂一点的SQL可以使用<script>方式或者使用Provider也行。
那再说,ResultMap支持的不好,但从3.某个版本,支持使用id,这样也可以在一定程度上进行复用了。
如果再说,Result 不支持继承,这。。,我暂时没有从注解中找相应的解决方案。
在XML中最不爽的一点,就是一个接口定义好了,如果要查SQL还要去另一个文件中查找。来回切换,比较消耗精力,特别是在查找问题的时候。
如果要说我把SQL跟代码混在一起了,的确是这样。
注解除了XML认为的灵活外,但它可以自定义一些注解 https://www.jianshu.com/p/03642b807688 (自定义 in , update 注解)
另外,今天花了几个小时的时间做了一个把XML转为注解代码小工具,没什么技术含量,
对于些复杂的转换还是不太成功,至少可以减少手工时间,把这点时间用来喝一杯也好。
mybatis xml mapper to annotation
代码地址: https://github.com/zbw911/mybitis-xmlmapper2annotation
关于Mybatis中Mapper是使用XML还是注解的一些思考的更多相关文章
- 逆向工程生成的mybatis中mapper文件。mapper接口,实例化成对象
逆向工程生成的mybatis中mapper文件中,*mapper文件只是接口,而不是类文件.但是却可以通过spring的容器获得实例. 例如: //1.获得mapper代理对象,从spring容器获得 ...
- 5.7 Liquibase:与具体数据库独立的追踪、管理和应用数据库Scheme变化的工具。-mybatis-generator将数据库表反向生成对应的实体类及基于mybatis的mapper接口和xml映射文件(类似代码生成器)
一. liquibase 使用说明 功能概述:通过xml文件规范化维护数据库表结构及初始化数据. 1.配置不同环境下的数据库信息 (1)创建不同环境的数据库. (2)在resource/liquiba ...
- MyBatis 中 Mapper 接口的使用原理
MyBatis 中 Mapper 接口的使用原理 MyBatis 3 推荐使用 Mapper 接口的方式来执行 xml 配置中的 SQL,用起来很方便,也很灵活.在方便之余,想了解一下这是如何实现的, ...
- Mybatis中mapper.xml的使用
详解多对多,mybatis多对多查询(xml方式和注解方式) 链接:https://blog.csdn.net/qq_42524262/article/details/98383977 链接:http ...
- mybatis 中mapper 的namespace有什么用
原文:http://zhidao.baidu.com/link?url=ovFuTn7-02s7Qd40BOnwHImuPxNg8tXJF3nrx1SSngNY5e0CaSP1E4C9E5J6Xv5f ...
- 关于使用mybatis中mapper instrances,通过session另一种操作方式
String resource = "mybatis-config.xml"; InputStream inputStream = null; try { // 获取SqlSess ...
- SSM框架中mapper和mapping.xml文件在同一个包下需要的配置
前言 当我们在开发过程中,由于maven项目本身的限制,我们不能直接把我们的mapper.xml文件和对应mapper.java接口文件放到一起,也就是不能直接放在java包中,如图: 因为mave ...
- ResultMap和ResultType在使用中的区别、MyBatis中Mapper的返回值类型
在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式,一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType:当使 ...
- MyBatis中Mapper的返回值类型
insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.del ...
随机推荐
- react native项目的创建和运行
1.创建项目 react-native init projectName 2.运行项目 在AndroidStudio上运行安卓模拟器 cd projectName react-native run-a ...
- boost-断言
标准assert宏的原型声明在<assert.h>中,其作用是如果它的测试条件为假,则调用abort()终止程序执行,程序退出的时候会弹出一个错误提示框,并向控制台输出所在文件及行号.as ...
- 用Kotlin写一个基于Spring Boot的RESTful服务
Spring太复杂了,配置这个东西简直就是浪费生命.尤其在没有什么并发压力,随便搞一个RESTful服务 让整个业务跑起来先的情况下,更是么有必要纠结在一堆的XML配置上.显然这么想的人是很多的,于是 ...
- (转)MyEclipse10下创建web项目并发布到Tomcat
转自:http://blog.sina.com.cn/s/blog_699d3f1b01012spf.html MyEclipse10下创建web项目并发布到Tomcat 1.软件安装(不作详细描 ...
- 51nod 1239 欧拉筛模板
#include<iostream> #include<cmath> #include<cstring> #include<cstdio> #inclu ...
- 终端简单使用 &vim编写代码
vim简单实用 & 用vim编写代码 ## 简单介绍 ## vi 1.c 建立1.c(文件存在,则打开1.c) vi共有三种模式: 按esc进入指令模式 按i进入编辑模式(按i光标位置不变 ...
- noip第5课资料
- Windows 8.1 Update中的小改变
在Build 2014大会中,发布了Windows 8.1 Update的更新,并将于4月8日通过Windows Update进行推送.但是,在MSDN订阅下载中,带有该更新的镜像已经可以在4月3号放 ...
- 《mysql必知必会》学习_sql文件导入数据库_20180724_欢
解决问题1:MySQL中导入sql文件. 步骤1:show databases;#看看我有什么数据库 步骤2:use hh;#我要用hh这个数据库,返回database changed说明打开成功. ...
- hdu 5091 给定矩形覆盖尽量多点 扫描线+线段树
http://acm.hdu.edu.cn/showproblem.php?pid=5091 给你10000以内的敌舰的坐标(即分别为x,y),要求用W*H的矩形去围住一个区域,使得这个区域内的敌舰最 ...