从项目开始使用 Mybatis Plus 到现在,对 Mapper 传递参数的方式做了多个版本的改进和优化。这篇文章主要讲解在改版和优化过程中遇到的问题,以及当时的一些想法。

第一版:单个参数传递

传递方式如下:

UserMapper.java

List

UserMapper.xml

<!--查询所有用户信息-->

注:项目开始阶段,功能比较简单,需求也比较简单,所以没有使用太多查询条件。

第二版:多个参数传递

在此先说下错误的使用方式:

List

报错信息如下:

"nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]"

报错的原因是:这样的传参方式,Mybatis 是无法识别参数名的,必须进行参数绑定。具体原因可以自行上网查询。

正确的传参方式需要把每一个参数与 Mapper.xml 中的参数进行绑定,如下:

List

UserMapper.xml

<!--查询所有用户信息-->

第三版:优化多参数传递

当参数特别多的时候,你会发现整个参数列表会写得很长。这时候就想,能不能通过一个对象去传参数

UserMapper.java

List

UserMapper.xml

<!--查询所有用户信息-->

第四版:再次优化多参数传递

虽然第三版已经够精简了,但是有个问题。所有的参数都必须放进一个对象中,这个对象势必非常臃肿。如果使用多个对象进行传递,又会出现之前的问题,参数列表中的参数过多。

想到在修改第二版的时候,有个报错,报错信息如下:

"nested exception is org.apache.ibatis.binding.BindingException: Parameter 'name' not found. Available parameters are [arg2, arg1, arg0, param3, param1, param2]"

通过网上查找得知,Mybatis 的参数映射方式是通过 Map。于是修改为以下的版本。

UserServiceImpl.java

public 

UserMapper.java

List

UserMapper.xml

<!--查询所有用户信息-->

改版大致经历了以上四个过程,希望能对大家有所帮助。


如果文章有帮助到了你,欢迎点赞、转发。

如果文章有错误的地方,欢迎留言交流。

mybatisplus修改单个属性_Mybatis Plus 中 参数传递的优化之路相关推荐

  1. mybatisplus修改单个属性_第二节 官封弼马温——类的属性

    <西游记>第2集 官封弼马温 美猴王战胜了混世魔王,花果山上喜气洋洋,小猴们每日操演武艺,十分快乐.悟空闯入东海龙宫,向龙王索取镇海神针--如意金箍棒.这棒虽重一万三千五百斤,却大可撑天着 ...

  2. python定义私有变量的方法_Python怎么修改私有属性 如何访问python类中的私有方法...

    python 类为什么不能定义私有属性和方法 因为b.name[0] = 'zhang'修改的是类属性,类属性是全局的,所有的实例共享,如果想私有化,可以添加 def __init__( self ) ...

  3. VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题

    VUE项目中使用this.$forceUpdate();解决页面v-for中修改item属性值后页面v-if不改变的问题 参考文章: (1)VUE项目中使用this.$forceUpdate();解决 ...

  4. MySQL中修改列属性时造成comment属性丢失

    修改字段定义的时候,要把整个字段的全部的定义都写上,举个栗子: 原字段定义: state  varchar(50) NOT NULL DEFAULT '' COMMENT '产品资料状态' 需求:修改 ...

  5. core修改模型属性中的默认单位

    今天记录croe如何修改模型属性的默认单位.我们都知道,单纯修改模型属性中的单位选项,只对本次打开的模型起到作用,当我们关闭该模型或关闭软件时,又需要重新设置单位值.不废话,直接上图: 1.点击选项 ...

  6. 微信小程序如何实现通过js修改wxml的for循环中的属性值

    微信小程序如何实现通过js修改wxml的for循环中的属性值 要实现的效果 具体代码 要实现的效果 点击每一个活动选项,实现显示对应的操作按钮 具体代码 首先要在对应页面的js中给data中定义数组, ...

  7. Vue中鼠标悬停更换图片/文字内容,动态展示/修改某些属性

    Vue中鼠标悬停更换图片/文字内容,动态展示/修改某些属性 鼠标悬停时:@mouseenter 鼠标离开时:@mouseleave 利用以上来绑定相应方法,例如: <div @mouseleav ...

  8. 如何为neo4j中的【关系】添加or修改【属性】?

    如何为neo4j中的[关系]添加or修改[属性]? 为neo4j中的[关系]添加or修改[属性] 在neo4j中创建包含"一对多"[属性]的[关系] 为neo4j中的[关系]添加o ...

  9. linux中更新python_linux下面升级 Python版本并修改yum属性信息

    最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...

最新文章

  1. linux sh 改 cmd
  2. 使用VisualStudio2010连接CodePlex进行代码管理
  3. 栈之顺序结构和链式结构
  4. Python拼接字符串的7种方法总结
  5. 为什么服务器要选择 Linux,这里总结了 10 大理由
  6. xml中的Document和Attribute
  7. 文本分类模型_【文本分类】几个可作为Baseline的模型
  8. 第三章 Goroutine调度策略(16)
  9. 二、npm scripts
  10. java读取ifc文件_IFC文件解析
  11. java前端弹窗的代码_弹出窗口的html的代码是怎么写的?
  12. java 原子量_Java多线程-新特征-原子量
  13. Dojo Shifter 2 for Mac(ae效果图层处理插件)
  14. 投资理财启蒙之定投出一个千万富翁?
  15. 中国诺贝尔物理学奖所有获得者名单(转)
  16. Biotin-STL,PL;生物素化马铃薯凝集素(STL,PL)
  17. 以下对linux中线程描述错误的是,2008年9月全国计算机等级三级PC技术真题
  18. 汇编之中DOS挂盘@[TOC](64位机汇编之中DOS挂盘)
  19. 为什么高质量计算机书籍几乎都是外国人写的?
  20. Markdown公式(二)

热门文章

  1. 16.Hadoop架构再探讨第2部分
  2. 2.变量/字符串/if/while/数据类型
  3. 1.我和python的第一次亲密接触
  4. JQuery 总结(5) 总结各种小应用
  5. Apache Maven 入门篇
  6. 程序员面试题精选100题(29)-调整数组顺序使奇数位于偶数前面[算法]
  7. 跟vczh看实例学编译原理——二:实现Tinymoe的词法分析
  8. 主成分分析(Principal components analysis)-最大方差解释
  9. 《大话数据结构》第9章 排序 9.9 快速排序(下)
  10. cocos2dx游戏开发——微信打飞机学习笔记(三)——WelcomeScene的搭建