MyBatis参数详解:parameterType与传参方式

需积分: 10 3 下载量 102 浏览量 更新于2024-09-09 1 收藏 55KB DOC 举报
"mybatis参数解说——讲解MyBatis传入参数与parameterType的使用细节" 在MyBatis框架中,`parameterType`属性是Mapper XML文件中`select`、`insert`、`update`和`delete`元素的一个关键属性,它用于指定与Mapper接口方法相对应的参数类型。这一属性允许我们传递不同类型的参数,包括基本数据类型和复杂对象类型。 1. 简单数据类型 当Mapper接口方法接收一个简单的Java数据类型,如`Integer`、`String`、`Boolean`等时,`parameterType`应该设置为相应的Java类名。例如,以下是一个查询单个用户信息的接口和XML配置: ```java // Mapper接口 User selectByPrimaryKey(Integer id); ``` ```xml <!-- Mapper XML --> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer"> select <include refid="Base_Column_List" /> from base.tb_user where id = #{id, jdbcType=INTEGER} </select> ``` 在这里,`#{id}`是占位符,用于插入实际传递的`id`值。需要注意的是,虽然可以使用任何名称替换`id`,但使用有意义的名称有助于代码的可读性。 2. 复杂数据类型 对于复杂的对象类型,`parameterType`应设置为对象的全限定类名。例如,如果我们有一个`User`类,我们可以这样做: ```java // Mapper接口 User selectByUser(User user); ``` ```xml <!-- Mapper XML --> <select id="selectByUser" resultMap="BaseResultMap" parameterType="com.example.User"> select <include refid="Base_Column_List" /> from base.tb_user where id = #{id, jdbcType=INTEGER} and name = #{name, jdbcType=VARCHAR} </select> ``` 在这种情况下,MyBatis会自动将`User`对象的属性映射到SQL语句中的占位符。 3. 多参数处理 当需要传递多个参数时,可以使用`@Param`注解将它们封装到一个Map对象中,或者创建一个专门的DTO(Data Transfer Object)类来承载这些参数。例如: ```java // Mapper接口 User selectByParams(@Param("id") Integer id, @Param("name") String name); ``` ```xml <!-- Mapper XML --> <select id="selectByParams" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from base.tb_user where id = #{id, jdbcType=INTEGER} and name = #{name, jdbcType=VARCHAR} </select> ``` 4. 动态SQL 在动态SQL语句中,如`<if>`或`<choose>`元素内,通常需要引用整个参数对象,此时使用`_parameter`来引用传递进来的参数。例如: ```xml <if test="_parameter!=null"> <if test="id != null"> AND id = #{id, jdbcType=INTEGER} </if> <if test="name != null and name != ''"> AND name like #{name, jdbcType=VARCHAR} </if> </if> ``` 这里的`_parameter`代表了传递进来的整个参数对象,无论它是一个简单的类型还是复杂的对象。 MyBatis的`parameterType`属性在处理参数时提供了极大的灵活性,无论是简单类型还是复杂对象,甚至多个参数,都能通过合理的配置实现数据持久层的灵活操作。同时,通过使用`@Param`注解和`_parameter`关键字,我们可以方便地控制和测试SQL语句中的条件表达式。