【前言】

最近研究一下Mybatis的通用mapper,然后对其进行了一些改造以适合我们的系统,接下来为大家分享一下我的研究思路以及研究成果。

【研究之路】

     一、ORM框架选型:

1、我们最近对我们的项目进行重构,关于ORM框架的选型进行了相关调研(入选我们候选之列有ORM经典框架:Hibernate和Mybatis)

2、Hibernate  VS   Mybatis

(1)Hibernate优缺点:

A、优点:抽象比较好,可以无缝切换不同数据源而无需改动代码;

B、缺点:学习成本高,批量操作效率低;

(2)Mybatis优缺点:

A、优点:学习成本低,批量操作效率高;

B、缺点:不支持无缝切换数据源;

(3)总结:

根据目前业务场景,各个框架的优缺点以及开发人员的水平,我们最终选用Mybatis;用Mybatis的话,逆向工程等一些东西肯定需要用上以此来加快开发;

     二、如何让Mybatis也具有Hibernate的一些优点:

通过改造Mybatis让其拥有HIbernate的一些特性,我负责这块儿的研究,从网上查了些资料后发现有两种实现的方式:

1、逆向工程的思路;

2、通用mapper的思路(通用mapper的码云网站);

小结:篇幅有限,逆向工程的思路在接下来的博文中会为大家详细介绍,接下来主要为大家绍通用mapper;

       三、我们项目更适合哪种:

1、通用mapper在应用到我们系统中遇到的一些问题:

在研究的过程中发现使用通用mapper需要自己做些改造来适应我们的项目,比如删除的方法,我们项目需用假删除等等;而且也会有一些潜在的坑,如果遇到需要花费一些时间去修改;

2、结合通用mapper改造我们自己写的逆向工程从而更适合我们的项目:

用我们自己写的逆向工程(参考《智能一代云平台(三十):逆向工程生成mybatis》)在我们项目实践中十分的好用;最终我们采用自己的写的逆向工程(借鉴通用mapper);

【总结】

1、在研究的过程从通用mapper中学到了一些良好的思路,比如可以将单表的增删改的一些操作直接封装到baseservice这样可以少写很多代码;

2、权衡利弊看得失,适合自己的才是最好的。

智能一代云平台(二十九):通用mapper的改造相关推荐

  1. 智能一代云平台(十九):选修课---类似秒杀的高并发业务

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan [前言] 选课,考试,评教这三个功能是我们的云平台中的重头戏:并发高是这三个功能的一个共同特点, ...

  2. 智能一代云平台(十二):轮次设置

    ​强烈推荐一个大神的人工智能的教程:http://www.captainai.net/zhanghan [前言] 基础系统是云平台中十分重要的一个子系统,它为其他系统提供了基础数据的支撑:基础系统中有 ...

  3. 智能一代云平台(十):Jboss远程访问流程总结

    [前言] 最近在做一个EJB相关的项目,在做的过程用到了远程调用的相关东西,自己进行一下梳理和总结,在此与大家分享. [相关流程]      一.对EJB和Jboss两者梳理: 1.小感:大多数情况下 ...

  4. 智能一代云平台(三十):逆向工程生成mybatis

    [前言] 最近在研究mybatis逆向工程的一些东西:通过研究Mybatis+通用mapper.逆向工程生成mybatis.Hibernate+mybatis:最终综合这些优点实现了一个我们自己的逆向 ...

  5. 创办智能车竞赛平台,十五年无间断,育人数十万

    ➤01 初稿 一.竞赛简介   全国大学生智能汽车竞赛是以智能汽车为研究对象,面向全国大学生开展的复杂工程探索类别的科技竞赛,目标是提高学生的动手实践能力.探索创新兴趣.团队协作精神.它起源于2005 ...

  6. FreeSql (二十九)Lambda 表达式

    FreeSql 支持功能丰富的表达式函数解析,方便程序员在不了解数据库函数的情况下编写代码.这是 FreeSql 非常特色的功能之一,深入细化函数解析尽量做到满意,所支持的类型基本都可以使用对应的表达 ...

  7. 智能一代云平台(三十一):mybatis加入分页

    [前言] 在<智能一代云平台(三十):逆向工程生成mybatis>已经将mybatis的逆向工程搞定了:但是美中不足的是mybatis的分页查询:接下来一起来探索一下分页查询. [分页查询 ...

  8. 智能一代云平台(五):移动开发之环境搭建

    [前言] 谣传最近IT领域异常火热,而IT中的移动端领域更是如日中天. 做为一名程序猿的我,也不甘Out:于是雄心勃勃参加一个智能一代云平台移动端项目开发:之前有人做了第一版,现在我们需要重构. [基 ...

  9. 【Microsoft Azure 的1024种玩法】二十九.基于Azure VM快速实现网络入侵检测 (IDS) 及网络安全监视 (NSM)

    [简介] 数据包捕获是一个重要组件,可以实施网络入侵检测系统 (IDS) 并执行网络安全监视 (NSM). 我们可以借助开源 IDS 工具来处理数据包捕获,并检查潜在网络入侵和恶意活动的签名. 使用网 ...

最新文章

  1. ES权威指南[官方文档学习笔记]-14 phrase search
  2. Delphi常见的运行期Access Violation错误分析
  3. fedora在此处打开终端
  4. js实现图片上传预览及进度条
  5. 开源FastGithub
  6. gradle 上传jar包_Gradle学习记录014 关于依赖的声明
  7. 教你如何挑选深度学习GPU
  8. 开发微信小程序 中遇到的坑 及解决方法
  9. mysql 添加实例_如何在多实例基础上再添加一个mysql的实例
  10. SpringBoot 启动报 Stopping service [Tomcat]
  11. Ansible 配置Windows Update
  12. 前端开发之字体大小px,em,rem,pt
  13. 用JavaFX几个简单动画——旋转风车、运动的圆
  14. python 采用to_csv保存数据不覆盖原有数据到文件中
  15. 总结下ThinkPHP的代码审计方法
  16. 利用人工智能和进化分析,绘制出真核生物的蛋白质之间相互作用的3D模型
  17. HDU - 5976 Detachment(逆元)
  18. 配置coredns解析公网域名
  19. 学生管理系统V1.0
  20. DNF自动启停服务端备份数据

热门文章

  1. @程序员,多写点“坏”代码吧!
  2. 谷歌 AI 中国中心彻底变天了!
  3. 那个代工 iPhone 的富士康投了 21 亿要做 AI 研发
  4. 牛客题霸-SQL篇——10~20题
  5. 数据结构与算法之栈的用法
  6. 心电图图平板运动测试软件,心电图和平板运动可以检查出心
  7. 金三银四Java高级工程师面试题整理,2年以上经验必看
  8. 帮你快速拿Offer!渣本逆袭大厂面经分享
  9. c语言中区别一般变量,C语言中,为了区别一般的变量,符号常量必须用
  10. kl散度与js散度_数据集相似度度量之KLamp;JS散度