1. MyBatis的传入参数parameterType类型分两种
1. 1. 基本数据类型:int,string,long,Date;
1. 2. 复杂数据类型:类和Map
注:不同版本的MyBatis对基本类型传递过来的参数名称不能识别,要使用_parameter来代替。
<select parameterType="" resultMap="BaseResultMap">
select <include ref/> from win_log where eventId = #{_parameter,jdbcType=BIGINT}
</select>
2. 如何获取参数中的值:
2.1 基本数据类型:#{参数} 获取参数中的值
2.2 复杂数据类型:#{属性名} ,map中则是#{key}
3.案例:
3.1 基本数据类型案例
- <sql id="Base_Column_List" >
- id, car_dept_name, car_maker_name, icon,car_maker_py,hot_type
- </sql>
- <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="" >
- select
- <include refid="Base_Column_List" />
- from common_car_make
- where id = #{id,jdbcType=BIGINT}
- </select>
3.2 复杂类型--map类型
- <select id="queryCarMakerList" resultMap="BaseResultMap" parameterType="">
- select
- <include refid="Base_Column_List" />
- from common_car_make cm
- where 1=1
- <if test="id != null">
- and = #{id,jdbcType=DECIMAL}
- </if>
- <if test="carDeptName != null">
- and cm.car_dept_name = #{carDeptName,jdbcType=VARCHAR}
- </if>
- <if test="carMakerName != null">
- and cm.car_maker_name = #{carMakerName,jdbcType=VARCHAR}
- </if>
- <if test="hotType != null" >
- and cm.hot_type = #{hotType,jdbcType=BIGINT}
- </if>
- ORDER BY
- </select>
3.3 复杂类型--类类型
- <update id="updateByPrimaryKeySelective" parameterType="" >
- update common_car_make
- <set >
- <if test="carDeptName != null" >
- car_dept_name = #{carDeptName,jdbcType=VARCHAR},
- </if>
- <if test="carMakerName != null" >
- car_maker_name = #{carMakerName,jdbcType=VARCHAR},
- </if>
- <if test="icon != null" >
- icon = #{icon,jdbcType=VARCHAR},
- </if>
- <if test="carMakerPy != null" >
- car_maker_py = #{carMakerPy,jdbcType=VARCHAR},
- </if>
- <if test="hotType != null" >
- hot_type = #{hotType,jdbcType=BIGINT},
- </if>
- </set>
- where id = #{id,jdbcType=BIGINT}
- </update>
3.4 复杂类型--map中包含数组的情况
<select resultType="" parameterType="" >
select sum(pro_order_num) proOrderNum,product_id productId,promotion_id promotionId
from pro_order
where 1=1
<if test="orderIds != null">
and
<foreach collection="orderIds" item="item" open="order_id IN(" separator="," close=")">
#{item,jdbcType=BIGINT}
</foreach>
</if>
GROUP BY product_id,promotion_id
</select>
注:
转载地址