mybatis出错
xml文件:
<update id="decreaseStock"> update item_stock set stock = stock - #{amount,jdbcType=INTEGER} where item_id = #{itemId,jdbcType=INTEGER} and stock >= #{amount,jdbcType=INTEGER} </update>
DAO接口:
int decreaseStock(@Param("itemId")Integer itemId, @Param("amont")Integer amount);
问题出现在没见标红的注解。
思考:为什么有的有的方法不用加 @Param 注解?举例:int updateByPrimaryKeySelective(ItemStockDO record);
1、不使用@Param注解时,参数只能有一个,当参数超过两个时,要用@Param
转:
实例一 @Param注解单一属性
dao层示例
Public User selectUser(@param(“userName”) String name,@param(“userpassword”) String password);
xml映射对应示例
<select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where user_name = #{userName,jdbcType=VARCHAR} and user_password=#{userPassword,jdbcType=VARCHAR} </select>
注意:采用#{}的方式把@Param注解括号内的参数进行引用(括号内参数对应的是形参如 userName对应的是name);
实例二 @Param注解JavaBean对象
dao层示例
public List<user> getUserInformation(@Param("user") User user);
xml映射对应示例
<select id="getUserInformation" parameterType="com.github.demo.vo.User" resultMap="userMapper"> select <include refid="User_Base_Column_List" /> from mo_user t where 1=1 <!-- 因为传进来的是对象所以这样写是取不到值得 --> <if test="user.userName!=null and user.userName!=''"> and t.user_name = #{user.userName} </if> <if test="user.userAge!=null and user.userAge!=''"> and t.user_age = #{user.userAge} </if> </select>