MyBatis作为现近JavaEE企业级项目开发中常用的持久层框架之一,以其简洁高效的ORM映射和高度的SQL的自由性被广大开发人员认可。Mybatis在接收系统传来的参数和返回的参数时主要可以有Map类型和实体类型两种。在我参与开发的有限几个项目当中,有使用实体类型比较多的,也有使用Map类型比较多的。不管选择哪种类型,在项目架构来说决定了这个项目中部分请求和返回数据的类型。

使用Map作为接收类型时,通常能够在传参到持久层这一过程中省去很多麻烦。前端请求及参数到达Action或者Controller时通常使用map来进行接收,使用map作为传递类型可以不用再将数据封装为Bean类型再去根据实体属性一一填充,直接通过Service和Dao以map类型将数据传到map配置SQL文件当中,省去很多数据转换环节。再执行完SQL语句返回时制定map类型返回,不管是单条数据还是List都可以快速编写并返回给前端。这种方式在处理多表查询时避免了编写大量的实体类和属性字段定义,减少了很多中间流程。缺点也一样明显,由于这种完全摒弃了面向对象思想的传值类型,首先需要自己详细记好map中key-value映射的关系,尤其的记好自己给每个数据库字段所定义的key值以做中间过程的查看或修改。其次,当你的代码不止你一个维护时,你的同事并不能通过查看实体类来获知你这个业务所传递的具体字段,只有通过询问或查看Map文件或者调试才能知晓,也不利于自己后期的codeReview。

使用实体类Bean来作为参数的传递类型,麻烦之处在于实体类的编写以及大量的get、set方法,以及需要在map文件中手写大量关系映射。除此之外在设计多表多字段的查询和操作时往往需要大量的代码编写已经多个代码层的变动,使得代码变得十分繁琐。优点之处是在于使用了面向对象的思想,使得你的代码更容易读懂。

mysql mybatis 返回值类型_使用MyBatis时接收值和返回值选择Map类型或者实体类型相关推荐

  1. mysql三表查询数据重复_解决mybatis三表连接查询数据重复的问题

    此问题的产生,主要是数据库的字段名一样导致 三张表 DOCTOR JOB OBJECT 有问题的查询语句和查询结果是: SELECT d.*,j.*,o.* from (select d.*,rown ...

  2. list mybatis 接收 类型_基于mybatis拦截器实现的一款简易影子表自动切换插件

    近期因工作需要,小编基于mybatis拦截器开发了一款简易影子表自动切换插件,可以根据配置实现动态修改表名,即将对原source table表的操作自动切换到对target table表的操作.该插件 ...

  3. mysql表设计 不同价格_数据库表设计,不同的属性值会有不同的价格

    请问大神们,这种结构如何实现,目前是以下做法: 有属性名表 goods_attr 有属性值表 goods_attr_value 但是 不同的属性值选择会有不同的价格, 这种多个值决定一个值的情况真没遇 ...

  4. 用python怎么样实现图像二值化_使用Python+OpenCV如何实现图像二值化

    使用Python+OpenCV如何实现图像二值化 发布时间:2020-10-26 14:15:52 来源:亿速云 阅读:77 作者:蛋片鸡 这篇文章运用简单易懂的例子给大家介绍使用Python+Ope ...

  5. mulitpartfile怎么接收不到值_和平精英信号接收区和信号值是什么?信号值怎么恢复...

    [闽南网] 和平精英公测开启,和平精英与刺激战场有什么不同呢?今天小编就为大家带来了信号值详解!各位玩家千万不要错过呀! 信号值详解 信号接收区和信号值是什么,对选手有什么影响? 在游戏战斗界面中,信 ...

  6. python调用自定义函数返回值的类型_生成dll文件以及python对DLL中函数的调用(参数类型以及返回值)...

    工具:VS2010    python2.7 (若使用的python是64位的,生成的dll也要使用x64) 系统:win7pro 64bit 首先,dll工程的创建以及dll文件的生成: new p ...

  7. mybatis多字段排序_解决mybatis中order by排序无效问题

    1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #{user_id},如果传入的值是111,那么解析成sql时的值为order by "111&qu ...

  8. hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle

    我想使用HSQL内存数据库对MyBatis持久层进行单元测试.真正的应用程序使用Oracle数据库.这工作正常,我们开始为id列添加自动递增的数字. Oracle需要使用序列来获取递增的数字,因此在O ...

  9. java返回object的类型_为什么标准java类的clone()返回Object而不是实际的类型

    在 java中允许指定函数返回的类型,例如下面的代码 public class Test { static class Dad { Dad me() { return this; } } static ...

最新文章

  1. Caffe上训练使用自己的数据
  2. Android 自定义实现switch开关按钮
  3. mlflow_在生产中设置MLflow
  4. python生成json_生成动态嵌套JSON对象和数组-python - python
  5. 手术后多久可以做胆摘除_近视手术后多久可以化眼妆?
  6. 接 嵌入式设备上的Linux系统开发
  7. 当在keil破解时出现的TOOLS.INI_TOOLCHAIN NOT INSTALLED的解决办法。
  8. 通信原理 AMI码和HDB3码的编码方式
  9. python测试脚本实例-python脚本测试
  10. SAP HR系统2019年五一节假日调整
  11. arcgis影像怎么去黑边_arcgis遥感图像去黑边林林种种(至少7种方法)
  12. 如何使用kettle将EXCEL导入数据库
  13. Java项目:超市进销存管理系统(java+SpringBoot+Html+Layui+echarts+mysql)
  14. 什么是“光照度(Illuminance)”?
  15. 万年历单片机C语言报告,51单片机万年历C语言
  16. Datawhale--组队学习第12期--python爬虫基础学习---task0/task1环境配置和网页请求基础
  17. HTML5触摸事件(多点、单点触控)
  18. 经典好文!手把手教你写Android项目文档,小白也能看明白
  19. 软件开发人员绩效评价标准
  20. 递归经典问题:迷宫以及八皇后

热门文章

  1. svn拉取文件合并_四、Jenkins+SVN拉取文件下发
  2. php5.4漏洞解决,php5.4.3的远程代码执行漏洞,提权挺管用
  3. jupyter notebook运行的快捷键_AI Studio-Notebook基础使用教程(一)
  4. 语言中的petchar运用_自闭症儿童语言障碍家庭训练,需要融入这些方法
  5. RocketMQ的安装与启动
  6. 12linux目录结构13Linux目录详解
  7. 计算机图标用鼠标双击和右键都无法启动,电脑桌面只有“我的电脑”图标双击找不开,用右键资源管理器能打开,为什么...
  8. python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现
  9. python opencv旋转图片_opencv3+python3进行图片旋转处理
  10. mysql自增长id为null_主键设为自增字段了, 在添加数据时经常报null id是怎么回事?...