一:在Userdao里面定义一个方法
public int deleteBatch(List<String> ids);
在对应的UserDao.xml
错误写法
<delete id="deleteBatch">
DELETE FROM s_user
WHERE id in
<foreach item="ids" collection="ids" open="(" separator=","close=")">
#{ids}
</foreach>
</delete>
错误原因是:
正确写法
<delete id="deleteBatch">
DELETE FROM s_user
WHERE id in
<foreach item="ids" collection="list" open="(" separator=","close=")">
#{ids}
</foreach>
</delete>
2:你也可以使用@Param("ids") 来指定参数名称,如以下写法正确
Userdao.java
public int deleteBatch(@Param("ids")List<String> ids);
UserDao.xml
<delete id="deleteBatch">
DELETE FROM s_user
WHERE id in
<foreach item="ids" collection="ids" open="(" separator=","close=")">
#{ids}
</foreach>
</delete>
二:如果你的入参只有一个参数并且类型是String,则需要注意:
UserDao,java
public int delete(String id);
在对应的UserDao.xml
错误写法
<delete id="delete">
DELETE FROM s_user
WHERE id =#{id}
</delete>
正确写法
<delete id="delete">
DELETE FROM s_user
WHERE id =#{_id}
</delete>
原因是:Mybatis 对于传入的参数是单个string类型的参数的时候,明确表示要用:#{_parameter}这样的格式才能够获取到传入参数的值。
2.你还可以@Param("id") 来指定参数名称,如以下写法正确
Userdao.java
public int delete(@Param("id")String id);
UserDao.xml
<delete id="delete">
DELETE FROM s_user
WHERE id =#{id}
</delete>