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层很费时。
在现实的开发中,两种思想都会有人采用,本人更倾向于第二种。