当前位置: 首页 > news >正文

功能型网站开发网站建设建设公司有哪些

功能型网站开发,网站建设建设公司有哪些,青浦网络公司网站,互联网公司中国排名问题描述: 在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况,该如何解决呢? 原因分析: Mybatis-Plus中字…

问题描述:

在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的,而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况,该如何解决呢?

原因分析:

Mybatis-Plus中字段的更新策略是通过FieldStrategy属性控制的。在实体字段上,如果不通过@TableField注解指定字段的更新策略,字段默认的更新策略是FieldStrategy.DEFAULT,即跟随全局策略。而Mybatis-Plus的全局配置中,字段的默认更新策略是FieldStrategy.NOT_NULL,即进行空值判断,不对NULL值数据进行处理。

public DbConfig() {this.idType = IdType.ASSIGN_ID;this.tableUnderline = true;this.capitalMode = false;this.logicDeleteValue = "1";this.logicNotDeleteValue = "0";this.insertStrategy = FieldStrategy.NOT_NULL;this.updateStrategy = FieldStrategy.NOT_NULL;this.whereStrategy = FieldStrategy.NOT_NULL;
}

解决方案:

1、设置字段级别的更新策略IGNORED

如果只需要实体中的几个字段支持空值更新,则通过@TableField注解指定字段的更新策略为FieldStrategy.IGNORED,忽略空值判断,直接更新即可。
该方式的控制级别是字段级别的控制。

示例:

@TableName(value ="user")
@Data
public class User implements Serializable {@TableId(value = "id",type = IdType.ASSIGN_ID)private Long id;private String name;private Integer age;@TableField(updateStrategy = FieldStrategy.IGNORED)private String email;
}

示例

2、设置全局更新策略IGNORED

如果需要全局所有实体的更新操作都需要支持空值更新,可以修改Mybatis-Plus的全局更新策略。
该方式的控制级别是项目级别的控制。

在spring boot中修改如下属性即可:

mybatis-plus.global-config.db-config.update-strategy=ignored

3、采用alwaysUpdateSomeColumnById方法进行全字段更新

Mybatis-Plus中自带的扩展方法alwaysUpdateSomeColumnById会忽略字段的更新策略,直接对实体中的每一个字段都执行更新操作。
如果你不想修改全局的字段更新策略,又需要项目中某个实体的所有字段都支持空值更新,推荐采用该方法。
该方式的控制级别是实体级别的控制。

实现步骤:

  • 继承DefaultSqlInjector扩展sql注入器,注入AlwaysUpdateSomeColumnById方法
public class MySqlInjector extends DefaultSqlInjector {@Overridepublic List<AbstractMethod> getMethodList(Class<?> mapperClass, TableInfo tableInfo) {List<AbstractMethod> methodList = super.getMethodList(mapperClass,tableInfo);//自动填充策略为更新填充策略时,不用插入值methodList.add(new InsertBatchSomeColumn(i -> i.getFieldFill() != FieldFill.UPDATE));//自动填充策略为插入时自动填充时,字段不用更新methodList.add(new AlwaysUpdateSomeColumnById(i -> i.getFieldFill() != FieldFill.INSERT));return methodList;}
}
  • 将扩展的sql注入器配置到spring容器中
@Configuration
public class MybatisPlusConfig {@Beanpublic MySqlInjector sqlInjector() {return new MySqlInjector();}
}
  • 扩展自己的通用Mapper接口CommonMapper
public interface CommonMapper<T> extends BaseMapper<T> {/*** 全量插入,等价于insert* @param entityList* @return*/int insertBatchSomeColumn(List<T> entityList);/*** 全字段更新,不会忽略null值* @param entity* @return*/int alwaysUpdateSomeColumnById(@Param("et") T entity);
}
  • UserMapper继承自定义的CommonMapper
public interface UserMapper extends CommonMapper<User> {}
  • 实体User
@TableName(value ="user")
@Data
public class User implements Serializable {@TableId(value = "id",type = IdType.ASSIGN_ID)private Long id;private String name;private Integer age;private String email;
}
http://www.yayakq.cn/news/591348/

相关文章:

  • 网站怎么做404企业建设网站的过程和预算表
  • 企业网站建设推广赣州58同城网
  • 南昌寻南昌网站设计学校网站建设新闻
  • 无锡高端网站开发潮州网络推广公司
  • 哪个网站做签约设计师比较好想学手艺在哪里可以培训
  • 做网站怎么做推广汉中市建设工程项目审批管理系统
  • 6生肖竞猜网站建设网站cms模板
  • 长沙网站建设 芙蓉区免费空间自带域名
  • 广州住房保障城市建设局网站动漫版
  • 网站建设绩效考评毕业设计网站最容易做什莫类型
  • 深圳企业建站高性价比的选择大连建设工程设计院有限公司网站
  • 安丘市建设局官方网站做网站设计工作的报告
  • 廊坊做网站电话建设厅网站打不开
  • 网站制作花多少钱深圳宝安网站建设公司推荐
  • 建设网站所采用的技术网站需要哪些
  • 魏县做网站wordpress 文章管理
  • 广东快速做网站公司鄂尔多斯网站建设
  • 怎样才能申请网站安徽大学最近消息
  • 苏州品牌网站设计定制装饰工程合同范本
  • 投票网站如何做丰城网站建设公司
  • 网站页面管理计算机应用技术专业网站开发方向
  • 有没有什么推荐的网站怎么建单位的网站
  • 怎样自己做网站模板北京网站设计排名
  • 重庆网站推广哪家好北京朝阳区哪里有网站开发
  • 深圳京圳建设监理有限公司网站徐州小学网站建设
  • 重庆市住房和城乡建设网站模板网站的建设方式与方法
  • 做网站 售后服务里都写啥江苏建设集团招聘信息网站
  • 建设银行网站怎么登录赫山区网站建设
  • 佛山网站建设哪家评价高旅游电子商务的三创赛网站建设
  • 快要到期的域名网站有了网址可以建网站吗