Mybatis框架Mapper中参数需要@Param映射相关问题分析

一、Param说明

        在Java编程中,param是一个常用的关键字,用于表示参数或者参数列表。在方法定义中,param关键字用于声明参数,以便在方法体中使用。本文将介绍Java中param的用法和示例,并通过代码示例说明其具体用法和作用。

        param关键字用于在方法定义中声明参数。通过使用param关键字,可以将参数传递给方法,并在方法体中使用。param关键字后面紧跟参数的数据类型和参数名。

二、Mybatis框架Mapper中参数需要@Param映射的几种情况

1.方法有多个参数

        mapper接口示例:

List<DeviceGroupVo> listGroup(@Param("parentId") Long parentId, @Param("groupName") String groupName);

         xml文件示例:

SELECT * FROM t_script_device_group WHERE parent_id = ${parentId}

2、法参数要取别名,需要@Param

        当需要给一个参数取一个别名时,我们也需要@Param注解
        mapper接口示例:

User getUserByUsername(@Param("name") String username);

        xml文件示例:

<select id="getUserByUsername" resultMap="BaseResultMap" parameterType="String">
        SELECT * FROM T_USER WHERE USERNAME = #{name}
</select>

3、xml中的SQL使用了$,需要@Param

虽然$存在SQL注入安全问题,但是有时候确实要使用,比如说传入列名或者表名时,就需要加上@Param注解
mapper接口示例:

List<User> getUsersOrderByParam(@Param("order_by") String order_by);

xml文件示例:

<select id="getUsersOrderByParam" resultMap="BaseResultMap" parameterType="String">
        SELECT * FROM T_USER ORDER BY ${order_by} DESC
</select>

4、动态SQL中使用参数作为变量,则需要@Param注解,即使只有一个参数。

这一种是比较特殊的,但是也是容易出错的,如果在动态SQL中使用参数作为判断条件,那么久要加上@Param注解
mapper接口示例:

User getUserById(@Param("id") Integer id);

xml文件示例:

<select id="getUserById" resultMap="BaseResultMap">
    SELECT * FROM T_USER WHERE ID = #{id}
</select>

这种情况,即使只有一个参数,也需要添加@Param注解,否则会报错,这种情况也最容易被忽略。

 以上四种情况都需要使用@Param注解,参数不多的是有使用@Param注解没有问题,但是当需要传入大量参数,我们一个一个加@Param注解,无形中增加了我们的工作量,下面给出两中解决方法,可以不使用@Param注解。

三、通过配置,不使用@Param注解

1.IDEA配置解决

IDEA配置-parameters参数,settings>Compiler>Java Compiler

 这种方法只适合在本地调试,同样的代码给到别人,还是会出错。

2.pom.xml 中进行配置

pom.xml文件中加入如下一段代码:

            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.plugin.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>

 这种方式跟上面的方法是是一样的,不过这种方法不用我们特意对idea进行配置,就算别人运行相同的代码,也不会报错

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值