关于数据库dao层执行多个list<sql>的注意事项

来源:互联网 发布:广州拓飞数据恢复 编辑:程序博客网 时间:2024/06/07 07:12

在项目过程中遇到一种非常诡异的情况。数据库的sql是装在list中执行的,平生能够第一次看到,和mybatis原理相同,略微注意一下。例如如下代码的是否成功的非空判断。

public boolean changeTableDate(String pdate,String planid,String datetype){        String sql = "delete from T_REP_OUT_YHJGFX where pdate='"+pdate+"' and planid='"+planid+"' and datetype='"+datetype+"'";        ArrayList listsql = new ArrayList();        listsql.add(sql);        sql = "insert into T_REP_OUT_YHJGFX\n"                + "        ( \n"                + "                PDATE, \n"                + "                PLANID, \n"                + "                JXID, \n"                + "                NEWSTARTDATE, \n"                + "                NEWENDDATE, \n"                + "                DATETYPE, \n"                + "                OUT_OBJID, \n"                + "                DEPT, \n"                + "                STARTDATE, \n"                + "                ENDDATE, \n"                + "                REPDAYS, \n"                + "                FOREDAY, \n"                + "                LASTDAY, \n"                + "                EQUID, \n"                + "                EQUNAME, \n"                + "                REPLEVEL, \n"                + "                REPTYPE, \n"                + "                REASON, \n"                + "                CANREVISE, \n"                + "                ISREVISE, \n"                + "                REVISEDAYS \n"                + "        )   \n"                + "select \n"                + "        MONTH, \n"                + "        '"+planid+"' as PLANID, \n"                + "        JXID, \n"                + "        startdate as NEWSTARTDATE, \n"                + "        enddate as NEWENDDATE, \n"                + "        '"+datetype+"' as DATETYPE, \n"                + "        OUT_OBJID, \n"                + "        DEPT, \n"                + "        STARTDATE, \n"                + "        ENDDATE, \n"                + "        REPDAYS, \n"                + "        FOREDAY, \n"                + "        LASTDAY, \n"                + "        EQUID, \n"                + "        EQUNAME, \n"                + "        REPLEVEL, \n"                + "        REPTYPE, \n"                + "        REASON, \n"                + "        CANREVISE, \n"                + "        '0' as ISREVISE, \n"                + "        '0' as REVISEDAYS \n"                + "from \n"                + "        T_REP_JXJH_MONTH\n"                + "        where month='"+pdate+"'";        listsql.add(sql);        try {           int[] r = dbMp.executeUpdate(listsql);            return r!=null && r.length>0;        } catch (Exception e) {            e.printStackTrace();            return false;        }    }
要注意的是try中的那俩行。

int数组里放的是执行一条sql影响的行数。listsql中有几条sql执行,数组中有几条数据。

以后项目中sql都得这么写,切记切记!



原创粉丝点击