Mybatis多参传递的四种解决方案

Mybatis多参传递的四种解决方案

代码异常:org.apache.ibatis.binding.BindingException: Parameter ‘param‘ not found.

长时间没用持久层mybatis框架,今天还出了些异常。查了一下原来是传多参的问题,此问题以前也出现过,现在把解决方案记下以便利其他人及自己后期异常解决。

首先声明,“本人使用的是Dao接口的方式

方案一

Dao参数传递为VO,XML配置:parameterType="*.VO"

方案二

Dao参数传递为Map,XML配置:parameterType="hashMap"。当然Service层需将参数放入Map。

此方法我之前经常用,但并不是太直观,接口方法不能直接清楚传的参数是什么

方案三

Dao参数仍该怎么写就怎么写,但在XML配置中不写入parameterType

参数用#{0}、#{1}、#{*}依次占位

方案四

Dao层使用注解@Param,XML配置中不写入parameterType

e.g

    Integer getCountByNameAndPass(@Param("userName") String userName,@Param("password")String password);

 个人觉得相较而言,方案四最优

PS:方案一、二配置中不写入parameterType未进行尝试。读者可自行尝试。

时间: 2024-10-09 21:35:52

Mybatis多参传递的四种解决方案的相关文章

iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用

目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 多线程的四种解决方案:pthread,NSThread,GCD,NSOperation 线程安全问题 NSThread的使用 GCD的理解与使用 NSOperation的理解与使用 Demo在这里:WHMultiThreadDemo Demo的运行gif图如下: 一.多线程的基本概念 进程:可以理解成一个运行中的应用程序,是系统进行资源分配和调度的基本单位,是操作

ios页面间传递参数四种方式

ios页面间传递参数四种方式 1.使用SharedApplication,定义一个变量来传递. 2.使用文件,或者NSUserdefault来传递 3.通过一个单例的class来传递 4.通过Delegate来传递. IOS开发使用委托delegate在不同窗口之间传递数据是本文要介绍的内容,主要是来讲解如何使用委托delegate在不同窗口之间传递数据,具体内容来看详细内容.在IOS开发里两个UIView窗口之间传递参数方法有很多,比如 前面3种方法,暂且不说,这次主要学习如何使用通过Dele

详解MySQL双活同步复制四种解决方案

目录 基于MySQL原生复制主主同步方案 基于Galera replication方案 基于Group Replication方案 基于canal方案 对于数据实时同步,其核心是需要基于日志来实现,是可以实现准实时的数据同步,基于日志实现不会要求数据库本身在设计和实现中带来任何额外的约束. 基于MySQL原生复制主主同步方案  这是常见的方案,一般来说,中小型规模的时候,采用这种架构是最省事的. 两个节点可以采用简单的双主模式,并且使用专线连接,在master_A节点发生故障后,应用连接快速切换

MyBatis 中 @Param 注解的四种使用场景,最后一种经常被人忽略!

有一些小伙伴觉得 MyBatis 只有方法中存在多个参数的时候,才需要添加 @Param 注解,其实这个理解是不准确的.即使 MyBatis 方法只有一个参数,也可能会用到 @Param 注解.但是,在你总结出规律之前,你可能会觉得莫名其妙,有的时候一个参数明明不用添加 @Param 注解,有的时候,却需要添加,不添加会报错. 有的人会觉得这是 MyBatis 各个版本差异的锅,不可否认,MyBatis 发展很快,不同版本之间的差异还挺明显的,不过这个加不加 @Param 注解的问题,却并不是版

分布式事务的四种解决方案

转:https://www.cnblogs.com/mayundalao/p/11798502.html 分布式事务指事务的操作位于不同的节点上,需要保证事务的 AICD 特性. 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务. 解决方案 在分布式系统中,要实现分布式事务,无外乎那几种解决方案. 一.两阶段提交(2PC) 两阶段提交(Two-phase Commit,2PC),XA协议的实现,通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否

Mybatis传多个参数(三种解决方案)

第一种方案 DAO层的函数方法 Public User selectUser(String name,String area); 对应的Mapper.xml <select id="selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{0} and user_area=#{1} </select> 其中,#{0}代表接收的是da

Android软键盘遮挡的四种解决方案

问题概述 在编辑框输入内容时会弹出软键盘,而手机屏幕区域有限往往会遮住输入界面,我们先看一下问题效果图: 输入用户名和密码时,系统会弹出键盘,造成系统键盘会挡住文本框的问题,如图所示: 输入密码时输入框被系统键盘遮挡了,大大降低了用户操作体验,这就是开发中非常常见的软键盘遮挡的问题,该如何解决? 简单解决方案  方法一 在你的activity中的oncreate中setContentView之前写上这个代码 getWindow().setSoftInputMode(WindowManager.L

在不同Activity传递数据(四种方式)

四种传递方法: 1.通过Intent传递数据: 2.通过静态变量传递数据: 3.通过剪切板传递数据: 4.通过全局对象传递数据: 分类介绍: 1.通过Intent传递数据: 代码如下: 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_

Mybatis调用PostgreSQL存储过程实现数组入参传递

注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递  > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于PostgreSQL自带数组类型,所以有一个自定义函数的入参就是一个int数组,形如: CREATE OR REPLACE FUNCTION "public"."func_arr_update"(ids _int4)... 1 如上所示,参数是一个int数组,Mybatis提