mybatisPlus中的updateById无法更新null值的字段

今天遇到了一个问题,至今未找到原因(只好换了一种方式解决问题先)

本人使用的mybatis-plus 版本是2.0.7

很多人都碰到过这个问题,使用mybatis-plus时,更新操作时,默认情况下如果字段为null是不会进行修改的

查询了网上的一些解决办法,

【第一种方法】:全局配置方式
在MyBatis-Plus配置文件中修改field-strategy字段验证的值为0,即忽略判断。
但是这样做会对所有的字段都忽略判断,如果一些字段不想要修改,但是传值的时候没有传递过来,就会被更新为null,这个不是我想要的(因此不考虑这个)
【第二种方法】:对需要的字段的验证策略进行修改
选用的这种方式
由于使用的mybatis-plus版本是2.0.7 , TableField注解中并没有strategy,对字段进行验证使用的是validate

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.baomidou.mybatisplus.enums.FieldStrategy;
/**
 * 

* 表字段标识 *

* * @author hubin sjy * @since 2016-09-09 */
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface TableField { /** *

* 字段值(驼峰命名方式,该值可无) *

*/
String value() default ""; /** *

* 当该Field为类对象时, 可使用#{对象.属性}来映射到数据表. *

*

* 支持:@TableField(el = "role, jdbcType=BIGINT)
* 支持:@TableField(el = "role, typeHandler=com.baomidou.xx.typehandler.PhoneTypeHandler") *

*/
String el() default ""; /** *

* 是否为数据库表字段 *

*

* 默认 true 存在,false 不存在 *

*/
boolean exist() default true; /** *

* 字段验证 *

*

* 默认 非 null 判断 *

*/
FieldStrategy validate() default FieldStrategy.NOT_NULL; }

因此对字段进行验证的写法为

@TableField(value = "product_code", validate =FieldStrategy.IGNORED)
	private String productCode;
/**
 * 

* 字段策略枚举类 *

* * @author hubin * @Date 2016-09-09 */
public enum FieldStrategy { IGNORED(0, "ignored"), NOT_NULL(1, "not null"), NOT_EMPTY(2, "not empty");

遗留问题

其实之前就已经使用过这种方式来进行操作了,并且是有效果的。但是今天这样写,却发现有问题。
当新增数据的时候,字段对应的值并没有被写入到数据库中。查询数据该字段返回值为null, 修改的时候是可以成功的。
尝试了半天仍然没有找到问题所在。

有遇到过此问题的同学可以交流下。

你可能感兴趣的:(Java)