000 发表于 2014-4-23 10:18:20

update会同时改变其他行状态的解决方法

在《企业招聘系统》的过程中,如果有同时多个简历申请,
点击审核,会出现,几个简历一下子都被审核的情况,。

出现上述情况的原因:
sql增强的代码时update jform_zp_b_resume set re_status = 1;
点击审核或得的相应是:
虽然,在js代码中获得当前行的数据和id,
在后台通过数据库cgform_button_sql表得到sql是update jform_zp_b_resume set re_status = 1;
在formateSQl过程中却并没有添加id,因为,在formateSQl(String sql, Map<String, Object> params)方法中,没有对UPDATE进行处理,因此应该做如下修改:
1:org.jeecgframework.web.cgform.service.impl.build包中DataBaseServiceImpl.java中formateSQl(String sql, Map<String, Object> params)应该在insert下添加对update的处理
        private String formateSQl(String sql, Map<String, Object> params) {
                //StringBuffer strSql = new StringBuffer(sql);
                sql = replaceExtendSqlSysVar(sql);
                if (params == null) {
                        return sql;
                }
                if(sql.toLowerCase().indexOf(CgAutoListConstant.SQL_INSERT)!=-1){
                        sql = sql.replace("#{UUID}", UUIDGenerator.generate());
                }
               
                //juan 2014年4月23日update 是应该添加 rowData 的id,更新一行
                if(sql.toLowerCase().indexOf(CgAutoListConstant.SQL_UPDATE)!=-1){
                        sql = sql+" where id = '"+((String)params.get("id")).toString()+"'";
                }

                for (String key : params.keySet()) {
//                        sql = sql.replace("#{" + key + "}", "'"+((String)params.get(key)).toString()+"'");
                        sql = sql.replace("#{" + key + "}", ((String)params.get(key)).toString());
                }
                return sql;
        }



000 发表于 2014-4-23 10:19:50

第一次,发帖,求指教

jueyue 发表于 2014-4-24 23:10:45

如果我没理解错误的话,update jform_zp_b_resume set re_status = 1;这个sql应该这么写
update jform_zp_b_resume set re_status = 1 where d = #{id}
就不存在你说的问题了

GIN 发表于 2014-4-26 10:36:15

不好意思 那个招聘系统审核的sql 视频里是弄错了 后面演示的时候更正了,在网盘的sql里更正但是视频没修正 正确的sql 如楼上所言
页: [1]
查看完整版本: update会同时改变其他行状态的解决方法