67,515
社区成员
发帖
与我相关
我的任务
分享
<!--批量删除-->
<update id="batchDeletionByListId" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE t_skin
<set>
is_delete = 1
</set>
WHERE
skin_id = #{item.skinId}
/* WHERE skin_id = #{skinId}*/
</foreach>
</update>
@Path("XXXXXXXXX")
@POST
public IServiceResponse batchDeletionGameSkinAction(String skinId, @Context HttpServletRequest request) {
JSONObject jsonObject = JSONObject.fromObject(skinId);
JSONArray jsonArray = JSONArray.fromObject(jsonObject);
List<BatchDeletionRequest> listArray = (List<BatchDeletionRequest>)
JSONArray.toCollection(jsonArray, BatchDeletionRequest.class);
Integer result = skinManager.batchDeletionByListID(list);
}
Integer result = skinManager.batchDeletionByListID(list);
这一行是出现
==> Preparing: UPDATE t_skin SET is_delete = 1 WHERE skin_id = ? /* WHERE skin_id = ?*/ ; UPDATE t_skin SET is_delete = 1 WHERE skin_id = ? /* WHERE skin_id = ?*/
ERROR c.m.f.c.s.mapper.JsonThrowableMapper [Logger.java:276] - nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named '' in 'class java.lang.String'
JSONObject jsonObject = JSONObject.fromObject(skinId);
JSONArray jsonArray = JSONArray.fromObject(jsonObject);
ArrayList<BatchDeletionRequest> listArray = (ArrayList<BatchDeletionRequest>)
JSONArray.toCollection(jsonArray, BatchDeletionRequest.class);
List<String> list = null;
for (int i = 0;i < listArray.size();i++){
list = listArray.get(i).getSkinId();
}
Integer result = skinManager.batchDeletionByListID(list);
上述是我在Action成中接受参数将,数组形式的json转化成list形式,我的JavaBean也就是BatchDeletionRequest封装类中的成员变量是
public class BatchDeletionRequest extends AbstractServiceResponse {
private List<String> skinId;
public List<String> getSkinId() {
return skinId;
}
public void setSkinId(List<String> skinId) {
this.skinId = skinId;
}
}
这样转化成ArrayList集合后,就需要获取集合中的封装类中集合中的String类型的skinId debug模式中传递到Dao成中list集合参数中的内容是我想考的skinid数据,但在Mapper.xml中就会出现这样的错误,我也不知道这是因为什么,有点迷了
希望能得到大家帮助 感谢
<!--批量删除-->
<update id="batchDeletionByListId" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE t_skin
<set>
is_delete = 1
</set>
WHERE
<if test="_parameter!=null and _parameter!=''">
skin_id = #{_parameter}
</if>
</foreach>
</update>
得到结果
2017-08-14 21:35:31.409 [http-bio-8081-exec-6] DEBUG java.sql.Connection [Slf4jImpl.java:43] - ooo Using Connection [com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl@745fef9e]
2017-08-14 21:35:31.413 [http-bio-8081-exec-6] DEBUG java.sql.Connection [Slf4jImpl.java:43] - ==> Preparing: UPDATE t_skin SET is_delete = 1 WHERE skin_id = ? ; UPDATE t_skin SET is_delete = 1 WHERE skin_id = ?
2017-08-14 21:35:31.494 [http-bio-8081-exec-6] DEBUG java.sql.PreparedStatement [Slf4jImpl.java:43] - ==> Parameters: {list=[skin201708092, skin201708091]}(StrictMap), {list=[skin201708092, skin201708091]}(StrictMap)
2017-08-14 21:35:35.675 [http-bio-8081-exec-6] INFO o.a.c.i.LoggingOutInterceptor [AbstractLoggingInterceptor.java:253] - Outbound Message
<update id="batchDeletionByListId" parameterType="java.util.List">
应该是listArray对吗
Integer result = skinManager.batchDeletionByListID(list);
这里不是应该是listArray嘛,还有我很好奇为啥连注释也一起循环拼接上去了
<!--批量删除-->
<update id="batchDeletionByListId" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE t_skin
<set>
is_delete = 1
</set>
WHERE
<if test="_parameter != null">
skin_id = #{_parameter}
</if>
</foreach>
</update>
<!--批量删除-->
<update id="batchDeletionByListId" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" separator=";">
UPDATE t_skin
<set>
is_delete = 1
</set>
WHERE
<if test="_parameter != null">
skin_id = #{_parameter}
</if>
</foreach>
</update>
将原有的skin_id = #{item.skinId}
修改为skin_id = #{_parameter}
,这样后,运行时没有什么提示错误的信息,当数据库中的数据也不进行改动了 不知道怎么正确执行了