iBatis 2.3.0
int ret = getSqlMapClientTemplate.update("sql", params);
<update id="sql">
update mytable set chk=#chk# where id in
<dynamic>
<iterate property="ids" open="(" close=")" conjunction=",">
#ids[]#
</iterate>
</dynamic>
</update>
So, 'ret' returns 0 rows updated. Th ids' length is less than 20, and it did not work, no exceptions or errors are thrown. I don't think its a deadlock, since the program returns the result & does not hand waiting for the deadlock to time out.
I would suggest setting the log4j Level to a lower setting to see the SQL that is being executed against the database and what the parameters are that are passed into the statement...