后台插入语句和更新语句的的两种设计思想

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_23145857/article/details/100007743

 public void updateActivityPhoto(ActivityPhoto ActivityPhoto) {
        Map<String, Object> map = BeanUtils.transBean2Map(ActivityPhoto);
        String sql = "UPDATE t_ActivityPhoto SET PhotoPath=:photoPath,IsDefault=:isDefault WHERE Id=:id";
        this.namedJdbcTemplate.update(sql, map);
    }

    public void addActivityPhoto(ActivityPhoto ActivityPhoto) {
        Map<String, Object> map = BeanUtils.transBean2Map(ActivityPhoto);
        String sql = "INSERT INTO t_ActivityPhoto (ActivityId,PhotoPath,Addtime,IsDefault) VALUES(:activityId,:photoPath,:addTime,:isDefault)";
        this.namedJdbcTemplate.update(sql, map);
    }

这种思想是语句把表的字段都写全,那么这种需要在后台把传入的字段写全,没有的值的传入null.

private String emptyToNull(String value){
        
        return StringUtil.isEmpty(value) ? null : value ;
    }

activity.setStartTime(emptyToNull(activity.getStartTime()));
        activity.setEndTime(emptyToNull(activity.getEndTime()));
        activity.setRegStartTime(emptyToNull(activity.getRegStartTime()));
        activity.setRegEndTime(emptyToNull(activity.getRegEndTime()));

优点:写dao层时省时

缺点:写controller层时费力,需要传所有的字段

另一种思想是,插入时语句动态,后台的写法只需要写部分字段

public void updateTicketSubjectManage(TicketSubjectManage ticketSubjectManage) {
        Map<String, Object> map = BeanUtils.transBean2Map(ticketSubjectManage);
        String sql = "UPDATE Ticket_SubjectManage SET IsClose=0 ";
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,DeptName=:deptName";
        }
        if (null != ticketSubjectManage.getAreaId() && ticketSubjectManage.getAreaId() > 0) {
            sql=sql+" ,AreaId=:areaId";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,PropertyId=:propertyId";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,ProvinceId=:provinceId";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,CityId=:cityId";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,TicketName=:ticketName";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,TaxpayerNumber=:taxpayerNumber";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,Address=:address";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,Phone=:phone";
        }
        
        
        
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,BankName=:bankName";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,Account=:account";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,Docker=:docker";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,DockerPhone=:dockerPhone";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,TicketKindId=:ticketKindId";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,Remark=:remark";
        }
        if (!StringUtil.isEmpty(ticketSubjectManage.getDeptName())) {
            sql=sql+" ,AddEuserId=:addEuserId";
        }

        
        sql=sql+" WHERE TicketId=:ticketId";
        this.namedJdbcTemplate.update(sql, map);
    }

这种后台就方便了,不需要传入所有的字段。

优点:controller层省时。

缺点:dao层很费时。

在现实的开发中,两种思想都会有人采用,本人更倾向于第二种。

猜你喜欢

转载自blog.csdn.net/qq_23145857/article/details/100007743