在MyBatis 3 XML映射文件中,参数(Parameters)是指在映射器接口方法中传递给SQL语句的值。参数可以通过 <parameterMap>、<parameterType>、<parameter> 等元素进行定义。以下是一些基本的参数配置方式:

<parameterMap> 元素:

<parameterMap> 元素用于定义参数映射,可以显式地为每个参数指定名称和类型。这个方式不太常用,因为MyBatis可以通过反射机制自动获取参数信息。
<parameterMap id="userParameterMap" type="com.example.model.User">
    <parameter property="id" jdbcType="INTEGER"/>
    <parameter property="username" jdbcType="VARCHAR"/>
    <parameter property="password" jdbcType="VARCHAR"/>
</parameterMap>

<parameterType> 属性:

<parameterType> 属性用于指定映射器接口方法的参数类型。这是一种常见的方式,MyBatis会自动识别方法参数的类型。
<select id="getUserById" resultType="com.example.model.User" parameterType="java.lang.Long">
    SELECT * FROM users WHERE id = #{id}
</select>

在这个例子中,parameterType 属性指定了 getUserById 方法的参数类型为 java.lang.Long。

<parameter> 元素:

<parameter> 元素可以用于显式地指定参数名称、类型以及其他属性。
<select id="getUserByUsername" resultType="com.example.model.User">
    SELECT * FROM users WHERE username = #{param1, jdbcType=VARCHAR}
</select>

在这个例子中,getUserByUsername 方法接收一个名为 param1 的参数,显式地指定了 jdbcType 属性。

动态SQL参数:

在动态SQL语句中,可以使用 #{} 占位符引用方法参数。这是一种非常灵活的方式,允许根据不同的条件构建不同的SQL语句。
<select id="getUsers" resultType="com.example.model.User" parameterType="com.example.model.User">
    SELECT * FROM users
    <where>
        <if test="username != null">
            AND username = #{username}
        </if>
        <if test="password != null">
            AND password = #{password}
        </if>
    </where>
</select>

在这个例子中,getUsers 方法接收一个 User 对象作为参数,通过 <if> 元素构建了一个动态的条件查询语句。

总体而言,MyBatis对参数的处理是相当灵活的,你可以选择适合你业务需求的参数配置方式。


转载请注明出处:http://www.pingtaimeng.com/article/detail/7009/MyBatis