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>
