MyBatis参数传递和接受(@Param)

发布时间 2023-10-05 21:10:12作者: chairunshan

一、@Param注解传递多个普通类型参数

在接收端便可使用 #{别名}的方式接收参数。

 

简单地说,在接口文件中使用org.apache.ibatis.annotations.Param类型的注解@Param为参数定义别名;在映射文件中使用#{别名}获取参数。

 

在此,我们以查询为例讲解利用@Param注解传递和接收多个普通类型参数。例如,以用户名或性别作为条件查询用户,所以需要传递两个参数。

 

接口文件UserParameterMapper.java相关代码如下:

List<User> queryUsersByUsernameOrGender(@Param("username") String u, @Param("gender") String g);

在该方法中使用@Param注解为第一个参数设定别名为username,为第二个参数设定别名为gender。

映射文件UserParameterMapper.xml相关代码如下:

<select id="queryUsersByUsernameOrGender" resultType="User">

select * from user where username = #{username} or gender= #{gender}

</select>

在该<select/>标签中利用#{别名}的方式获取传递过来的用户名和性别。

 

二、@Param注解传递多个POJO类型参数

 

与利用@Param传递多个普通类型参数类似,我们可利用@Param传递多个POJO类型参数。在此,我们以传入2User对象为例讲解结合@Param传递多个POJO作为参数的情况。

 

 

接口文件UserParameterMapper.java相关代码如下:

List<User> queryUsersByTwoUserWithParam(@Param("firstUser")User fu, @Param("secondUser")User su);

 

定义查询用户的方法queryUsersByTwoUserWithParam,利用@Param注解设置第一个参数的别名为firstUser,注解设置第二个参数的别名为secondUser。

 

 

 

映射文件UserParameterMapper.xml相关代码如下:

 

<select id="queryUsersByTwoUserWithParam" resultType="User">


select * from user where username = #{firstUser.username} or gender= #{secondUser.gender}


</select>

 

在该<select/>标签中利用#{POJO别名. 的属性名}的方式获取第一个User对象的username,获取第二个User对象的gender作为查询条件。