Ⅰ.前言

      上一节讲到了数据库的新增,接下来就来讲数据库的更新操作。😄

Ⅱ.正题

1.根据主键更新

        Delegator delegator = ctx.getDelegator();
        GenericValue genericValue = delegator.makeValue("tableName"); //创建一个实体对象
        genericValue.set("PK", "PKValue");    //传入主键值 联合主键就传入多个
        genericValue.set("column1", "value1");    //传入值
        genericValue.setString("column2", "value2");
        genericValue.set("column3", "value3", false); //如果value3是null就不set
        genericValue.store();        //更新入库

2.多条件更新

        Delegator delegator = ctx.getDelegator();
        Map fieldsMap = new HashMap() {{
            put("column1", "value1");  //需要更新的字段
            put("column2", "value2");
            put("column3", "value3");
        }};
        //查询条件也可以多重,具体参考多条件查询 EntityOperator不止EQUALS,还有NOT_EQUAL、LESS_THAN、LIKE等
        EntityCondition entityCondition = EntityCondition.makeCondition("column4", EntityOperator.EQUALS, "value4");
        delegator.storeByCondition("tableName", fieldsMap, entityCondition); //更新入库

3.批量更新

      这个批量更新不止一个表的批量更新,还能多表的批量更新,然后事务提交,为了方便回滚吧。

        Delegator delegator = ctx.getDelegator();
        GenericValue genericValue1 = delegator.makeValue("tableName1");
        genericValue1.put("PK", "PKValue"); //主键
        genericValue1.put("column1", "value1");
        GenericValue genericValue2 = delegator.makeValue("tableName2");
        genericValue2.put("PK", "PKValue"); //主键
        genericValue2.put("column1", "value1");
        List list = new ArrayList() {{
            add(genericValue1);
            add(genericValue2);
        }};
        delegator.storeAll(list);       //不存在则插入否则更新入库

Ⅲ.尾声

      更新应该就这些操作了吧,其它操作还是看看源码吧。😋