前端修改user对象的某些属性,传入后端一个新的user对象,后端要更新update(User user)的实现时,sql语句怎么写?id为主键,不会被修改.其实思路非常简单,不能把属性的所有字段都进行sql语句的set更新,而是需求中要修改哪些字段就进行哪些字段的set操作.不准备修改的就不要写set进行修改.如下面,把所有的字段都重新set了一次,如果业务就是要修改所有字段那就必须这样.但是大多数情况仅仅是修改某些字段.
private final String UPDATE_USER = "UPDATE q_user SET user_id = ?, nickname = ?, realname = ?,password = ?, email = ?,status = ?, last_login_time = ? WHERE id = ? ";
下面的sql语句就是对部分属性的更新设置:
private static final String UPDATE_USER = "UPDATE q_user SET "+UserInfoStrings.nickname+" = ?, "+UserInfoStrings.realName+" = ?,"+UserInfoStrings.email+" = ?"+" WHERE "+UserInfoStrings.userId+" = ? ";
另外:以上sql语句不是直接的写出列名,而是通过一个类UserInfoStrings来调用这个列名,这样做的好处是在写代码的时候不容易写错列名,因为ide对类的方法变量等都由自动提示的功能.
public class UserInfoStrings {
public static final String id = "id";
public static final String userId = "user_id";
public static final String nickname = "nickname";
public static final String realName = "realname";
public static final String password = "password";
public static final String email = "email";
public static final String status = "status";
public static final String lastLoginTime = "last_login_time";
}
上面通过类的静态变量取得列名,更好的方法是用枚举.