我们在使用mybatis时,一般都会手写一个实体类和数据库中的数据对应。
public class Article{
public static final int Article_TOP = 1;
public static final int Article_Common = 0;
private Long id;
private String title;
private String summary;
private int commentCounts;
private int viewCounts;
private Long authorId;
private Long bodyId;
private Long categoryId;
private int weight = Article_Common;
private Long createDate;
有时候我们会把实体类的变量类型写成int类型,这也就导致了一些问题,当我们使用mybatis的update方法更新时,update方法有两个参数一是entity,二是条Wrapper。当我们把这个实体类当做参数传进去的时候,数据库就会莫名其妙的更新其他字段
主要原因就是我们在手写实体类的时候有些变量的类型我们写成基本类型,就像上面的Article类里的commentCounts变量,当我们声明一个基本类型没有给它赋值的时它都会有默认值。mybatis认为只要你这个变量不为空,那它就是需要更新的,所以就会导致数据中的某些字段更新。
所以我们在手写实体类和数据库中的数据相对应的时候,如果有些变量类型是基本数据类型,我们一定要用它的包装类。
|