我是靠谱客的博主 明理银耳汤,最近开发中收集的这篇文章主要介绍ibatis的sqlmap.xml中id可以传入一个参数_MyBatis 中简单类型参数引用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Mybatis 对于简单类型参数(基本数据类型、String)的传参绑定引用。可以有 使用@Param注解不使用@Param注解 两种方式实现

不使用@Param注解

以下Mapper接口接收一个简单类型int参数,同时形参前不使用@Param注解

@Mapper
    

在Mapper.xml映射文件中,有两个地方需要引用形参:sql语句和动态sql。对于前者,在未使用 @Param 注解的情况下,简单类型参数,可以用任意名称通过#{}、${}在sql语句中引用形参变量;而对于后者,只能使用 _parameter 来引用传入的形参,切记不要使用接口方法的形参名来引用(此处即为num),否则会失败

如下示例的mapper.xml映射文件,sql语句引用任意名来引用传入的参数即可,故可以使用id,而在动态sql中使用方法接口的形参名num来引用传入的参数

<select 

当通过service向该dao接口传入数据时(num = 15)后,程序会抛出异常,提示没有num的get方法

ERROR 21464 --- [nio-8088-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'num' in 'class java.lang.Integer'] with root cause

对于上述异常,解决方案是在动态sql的参数引用使用 _parameter 即可

<select 

从下述执行结果可以看出,该sql被正常解析拼接

95a61678b293ec0cb7be88f614b42dab.png

使用@Param注解

以下Mapper接口接收一个简单类型int参数,但是形参前使用@Param注解来标识该参数,则在mapper.xml映射文件中,无论是sql语句和动态语句中,都需要使用该@Param注解的标识来引用该参数

以下Mapper接口接收一个简单类型int参数,同时形参前使用@Param注解来标识该形参

@Mapper
    

则在Mapper.xml文件中,sql语句和动态sql都只能通过@Param注解的标识 num2 来引用参数,如下所示:

<select 

当传入参数为30和15时,sql语句拼接结果如下,可以看到sql语句正常:

8114019a59aa8396acd1a56a94883781.png

c1ab146617fdc37d80a699534b91310d.png

最后

以上就是明理银耳汤为你收集整理的ibatis的sqlmap.xml中id可以传入一个参数_MyBatis 中简单类型参数引用的全部内容,希望文章能够帮你解决ibatis的sqlmap.xml中id可以传入一个参数_MyBatis 中简单类型参数引用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部