- 今天遇到一个需求,就是为了把测试数据库里的数据同步更新到线上数据库里,要对数据表里的数据进行编写更新语句以便于在线上库里执行,原来的写法:
System.out.println("UPDATE sys_business_type SET priority ="+type.getPriority());
-
这种拼接字符串的写法进行输出操作,但是为了迎合以后新增的更多更新属性的要求,改成了如下的形式.
-
先定义一个字符串类型,然后输出更新语句特定的格式(语句和属性),用%s来接收参数
String sqlTemple = "UPDATE sys_business_type "
+ "SET priority = \'%s\',"
+ " unalterable = \'%s\'"
+ " WHERE business_no = \'%s\'"
+ ";\n";
- update语句都写错了,哭泣...(注意sql支持单引号,两个属性之间用逗号隔开,左反斜杠输出引号)
public void allOfBusiness () {
//这里写了一个查询方法,得到一个数组
List<Model> types = workstationMapper.allOfBusiness();
for (Model type : types) {
String updateSql = String.format(sqlTemple, type.getPriority(),
type.getUnalterable(),
type.getBusinessNo());
System.out.println(updateSql);
}
}
- 输出内容如下:
UPDATE sys_business_type SET priority = '15', unalterable = '0' WHERE business_no = 'GPS';
- 看似简单的一个数据库更新语句,我自己都没想到能遇到这么多的错误,哎,真是不能眼高手低啊.
网友评论