码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis多个参数不加@Param

时间:2021-04-05 12:39:41      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:获取   uid   get   java   选项   date   config   artifact   方法签名   

mybatis 3.4.1之后,允许不加 @Param指定参数名称,自动会以入参的名称作为param key

useActualParamName
允许使用方法签名中的名称作为语句参数名称。
为了使用该特性,你的项目必须采用 Java 8 编译,并且加上 -parameters 选项。(新增于 3.4.1)
默认:true

案例

不加 @Param 的多入参mapper

public interface TestUserMapper {
    int update(Long guid, String appName);
}

入参为: update(110, "testAppName")

  • 编译时不加 -parameters 参数,那么mybatis的参数的格式是 {"arg0":110, "arg1":"testAppName"} , 在xml文件就不能用 #{guid} 来取值了
  • 加上 -parameters 编译后,参数格式为{"guid":110, "appName":"testAppName"} 在xml sql中就能正常使用参数名称

原理:

useActualParamName 默认是true,如果入参没加@Param指定参数key,则会利用java8的特性,从反射类Parameter#getName()获取这个参数的名称

例如,可以maven编译插件上指定

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>8</source>
        <target>8</target>
        <compilerArgs>
            <arg>-verbose</arg>
            <arg>-Xlint:all</arg>
            **<arg>-parameters</arg>**
        </compilerArgs>
    </configuration>
</plugin>

结论

不推荐偷懒,这种方式依赖java8的编译特性,比较隐晦,容易让其他开发混淆

mybatis多个参数不加@Param

标签:获取   uid   get   java   选项   date   config   artifact   方法签名   

原文地址:https://www.cnblogs.com/mushishi/p/14613773.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!