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

做关于时尚网站的目的百度seo关键词优化

做关于时尚网站的目的,百度seo关键词优化,惟博df1042可以看多远,四川全美网络科技有限公司文章目录 如何让mybatis-plus的逻辑删除注解TableLogic临时失效1. 场景复现1.1 controller代码1.2 service层代码1.3 entity代码 2. 问题分析3. 解决方案3.1 说明3.2 核心代码3.3 service方法对应修改为3.4 运行结果 如何让mybatis-plus的逻辑删除注解TableLogic临时失效 1. 场…

文章目录

  • 如何让mybatis-plus的逻辑删除注解@TableLogic临时失效
    • 1. 场景复现
      • 1.1 controller代码
      • 1.2 service层代码
      • 1.3 entity代码
    • 2. 问题分析
    • 3. 解决方案
      • 3.1 说明
      • 3.2 核心代码
      • 3.3 service方法对应修改为
      • 3.4 运行结果

如何让mybatis-plus的逻辑删除注解@TableLogic临时失效

1. 场景复现

1.1 controller代码

@GetMapping("/getSpacexTable")
public String getSpacexTable(){List<SpacexTable> list = spacexTableService.queryAll();return JSON.toJSONString(list);
}

1.2 service层代码

@Override
public List<SpacexTable> queryAll() {List<SpacexTable> list = list();return list;
}

1.3 entity代码

@Data
@TableName(value ="spacex_table")
public class SpacexTable implements Serializable {@TableIdprivate String id;private String name;@TableLogicprivate Integer isDel;@TableField(exist = false)private static final long serialVersionUID = 1L;
}

2. 问题分析

当我们正常调用接口时,sql查询日志为

SELECT id,name,is_del FROM spacex_table WHERE is_del=0

数据库数据记录为:
在这里插入图片描述
接口调用结果为

[{"id":"1","isDel":0,"name":"小张"},{"id":"3","isDel":0,"name":"小杨"}]

可见逻辑删除注解已生效,is_del=1的小李没有查询出来

3. 解决方案

3.1 说明

  1. 我们让当前查询的逻辑删除失效时,不应影响其他查询活动,所以我们我们需要在线程上打上标识,区分是否执行逻辑删除
  2. 因为使用了mybatis-plus框架,所以可以通过拦截器来实现,在适当方法处,将sql语句中的逻辑删除替换掉即可

3.2 核心代码

@Slf4j
@Component
// 拦截StatementHandler的prepare方法,改变编译的SQL语句
@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})})
public class LogicDeletenterceptor implements Interceptor {// 通过ThreadLocal给当前线程打上标识public static ThreadLocal<Boolean> logicDelete = new ThreadLocal();@Overridepublic Object intercept(Invocation invocation) throws Throwable {log.info("====SqlModifyInterceptor======(" + logicDelete.get() + ")=====");// 判断线程标识if (!Boolean.FALSE.equals(logicDelete.get())) {return invocation.proceed();}StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget());MetaObject metaObject = SystemMetaObject.forObject(statementHandler);MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) {return invocation.proceed();}BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql");String sql = boundSql.getSql();log.info("origin sql:" + sql);// TODO 在这里替换字段,改成不影响结果的条件即可sql = sql.replace("is_del=0","1=1").replace("del_number=0", "1=1");metaObject.setValue("delegate.boundSql.sql",sql);log.info("modify sql:" + sql);return invocation.proceed();}@Overridepublic Object plugin(Object target) {return Plugin.wrap(target, this);}@Overridepublic void setProperties(Properties properties) {}
}

3.3 service方法对应修改为

@Override
public List<SpacexTable> queryAll() {// 开启逻辑删除失效    LogicDeletenterceptor.logicDelete.set(false);List<SpacexTable> list = list();// 关闭逻辑删除失效LogicDeletenterceptor.logicDelete.remove();return list;
}

3.4 运行结果

sql查询日志为

SELECT id,name,is_del FROM spacex_table WHERE 1=1

接口调用结果为

[{"id":"1","isDel":0,"name":"小张"},{"id":"2","isDel":1,"name":"小李"},{"id":"3","isDel":0,"name":"小杨"}]

可见逻辑删除is_del=1的小李也被查询出来了

http://www.yidumall.com/news/76701.html

相关文章:

  • 诚信建设网站的作用app拉新项目
  • 某小型网站开发公司创业策划福州seo代理计费
  • 网站推广方式方法app营销推广方案
  • 用ps制作网站首页如何优化网络连接
  • 丹凤县人民政府门户网站建设万秀服务不错的seo推广
  • 天猫优惠卷怎么做网站广告类的网站
  • 泰安房产网签查询系统搜索引擎seo优化怎么做
  • 泰国一家做男模的网站推广软件是什么工作
  • 设计类网站策划案如何进行搜索引擎优化 简答案
  • 自动做reference的网站网络营销八大职能
  • wordpress 输出arrayseo怎么优化简述
  • 电影网站开发整站优化报价
  • 简答题网络营销是什么衡阳网站优化公司
  • vue做的pc线上网站汕头seo代理
  • 视频解析网站怎么做的青岛网站建设维护
  • 佛山新网站建设教程网店关键词怎么优化
  • 电子商务网站分析数据分析一般用什么软件
  • biz后缀的网站郑州网站关键词排名
  • 湖南省怀化市鹤城区疫情最新消息seo自动推广软件
  • amazon日本站百度指数第一
  • 网站改版建设攀枝花网站seo
  • 唯品会 一家专门做特卖的网站班级优化大师app下载学生版
  • o2o平台有哪些国内seo技术是什么意思
  • 制作logo网站百度seo服务
  • 哈尔滨百度网站建设搜索引擎优化简称seo
  • 梅州市建设局网站网络建站平台
  • 海南做网站的网络公司nba最新消息新闻
  • 全屏滚动的网站百度贴吧入口
  • 建网站带支付链接动态网站设计毕业论文
  • 做瞹瞹小视频网站网站一键生成