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

网站栏目设计内容yw55516can优物入口

网站栏目设计内容,yw55516can优物入口,服装设计网上自学课程,济南快速网站制作公司Mybatis/MybatisPllus公共字段填充与配置逻辑删除 在开发过程中#xff0c;很多时候需要处理一些公共字段#xff0c;例如#xff1a;创建时间、修改时间、状态字段等。这些字段通常会在插入或更新数据时进行填充#xff0c;以便记录数据的变化和状态。同时#xff0c;逻…Mybatis/MybatisPllus公共字段填充与配置逻辑删除 在开发过程中很多时候需要处理一些公共字段例如创建时间、修改时间、状态字段等。这些字段通常会在插入或更新数据时进行填充以便记录数据的变化和状态。同时逻辑删除也是常见的业务需求比如删除记录并不是从数据库中物理删除而是通过更新某个字段如 is_deleted来标记数据已被删除。 MyBatis 和 MyBatis-Plus 都提供了相应的机制来处理这些公共字段的填充和逻辑删除。下面我们将分别介绍如何在 MyBatis 和 MyBatis-Plus 中实现公共字段填充与逻辑删除。 1.公共字段填充 mybatis 在 MyBatis 中公共字段填充可以通过 TypeHandler 或者使用拦截器Interceptor来实现。但更为常见且方便的方式是通过 插件例如 MyBatis Plus来进行全局配置。下面我们讲解一种使用拦截器的方式来实现公共字段填充。 MyBatis 支持通过拦截器Interceptor来修改执行的 SQL或者在执行时进行公共字段的填充。你可以定义一个 Interceptor在插入或更新操作前对公共字段进行填充 Intercepts({Signature(type StatementHandler.class, method prepare, args {Connection.class, Integer.class}) }) Component public class MybatisInterceptor implements Interceptor {Overridepublic Object intercept(Invocation invocation) throws Throwable {// 获取当前执行的 SQLStatementHandler statementHandler (StatementHandler) invocation.getTarget();MappedStatement mappedStatement (MappedStatement) invocation.getArgs()[0];BoundSql boundSql statementHandler.getBoundSql();// 获取 SQL 类型插入或更新String sql boundSql.getSql();if (sql.trim().toUpperCase().startsWith(INSERT)) {// 如果是插入操作填充公共字段sql addCommonFieldsForInsert(sql);} else if (sql.trim().toUpperCase().startsWith(UPDATE)) {// 如果是更新操作填充公共字段sql addCommonFieldsForUpdate(sql);}// 更新 SQLboundSql.setSql(sql);return invocation.proceed();}private String addCommonFieldsForInsert(String sql) {// 获取当前用户信息例如从 ThreadLocal 中获取当前用户String currentUser getCurrentUser();// 添加创建时间、更新时间、创建人、更新人等字段sql sql.replace((, (create_time, update_time, create_by, update_by, );sql sql.replace(values, values(now(), now(), currentUser , currentUser , );return sql;}private String addCommonFieldsForUpdate(String sql) {// 获取当前用户信息例如从 ThreadLocal 中获取当前用户String currentUser getCurrentUser();// 替换 SQL设置更新时间、更新人if (sql.contains(set)) {sql sql.replaceFirst(set, set update_time now(), update_by currentUser , );}return sql;}private String getCurrentUser() {// 模拟获取当前用户实际情况可以通过 ThreadLocal 或 SecurityContext 获取return admin; // 假设当前用户是 admin}记得要把拦截器注册 mybatis-plus 通过实现MetaObjectHandler接口简化处理。 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date;Component public class MyMetaObjectHandler implements MetaObjectHandler {Overridepublic void insertFill(MetaObject metaObject) {// 获取当前登录用户假设是通过 ThreadLocal 获取当前用户String currentUser getCurrentUser(); this.strictInsertFill(metaObject, createBy, String.class, currentUser);this.strictInsertFill(metaObject, createTime, Date.class, new Date());this.strictInsertFill(metaObject, updateBy, String.class, currentUser);this.strictInsertFill(metaObject, updateTime, Date.class, new Date());}Overridepublic void updateFill(MetaObject metaObject) {// 获取当前登录用户假设是通过 ThreadLocal 获取当前用户String currentUser getCurrentUser();this.strictUpdateFill(metaObject, updateBy, String.class, currentUser);this.strictUpdateFill(metaObject, updateTime, Date.class, new Date());}private String getCurrentUser() {// 假设当前用户信息存储在 ThreadLocal 中return admin; // 或者从上下文中获取} } 2.逻辑删除 1. MyBatis实现方式 需手动修改所有SQL语句或在拦截器中添加条件。 XML映射文件示例 select idselectById resultTypeUserSELECT * FROM user WHERE id #{id} AND is_deleted 0 /selectupdate iddeleteByIdUPDATE user SET is_deleted 1 WHERE id #{id} /update运行 HTML 2. MyBatis-Plus实现方式 提供全局配置和注解两种方式。 方式1全局配置application.yml mybatis-plus:global-config:db-config:logic-delete-field: isDeleted # 逻辑删除字段名logic-delete-value: 1 # 删除标记值logic-not-delete-value: 0 # 未删除标记值方式2注解标记 public class User {TableLogicprivate Integer isDeleted; }方式3Java配置类 Configuration public class MyBatisPlusConfig {Beanpublic GlobalConfig globalConfig() {GlobalConfig config new GlobalConfig();GlobalConfig.DbConfig dbConfig new GlobalConfig.DbConfig();dbConfig.setLogicDeleteField(isDeleted);dbConfig.setLogicDeleteValue(1);dbConfig.setLogicNotDeleteValue(0);config.setDbConfig(dbConfig);return config;} }
http://www.dnsts.com.cn/news/240943.html

相关文章:

  • 张家港网站建设制作在线网站建设课程
  • 江苏省住房城乡建设厅网站html留言簿网站基本框架搭建
  • 中国最好的网站制作公司云程环境建设集团网站
  • 做网站什么程序好做几个小网站还是做一个大网站
  • 怎么做网盘搜索网站一般做网站宽度是多少
  • 网站专属定制高端网站建设网站建设常用六大布局
  • 被墙的网站有哪些临沂兰山建设局网站
  • 青岛开发区制作网站公司培训教育网站开发
  • 营销型网站的建设规划海外贸易在什么网站做
  • 四川建设厅网上查询网站京东旗下的企业网站有哪些
  • 餐饮网站建设优化建站amp 插件 wordpress
  • 建设银行网站查询密码是什么免费主页空间申请网站
  • 十堰吉安营销型网站优化营销怎样做网站的二维码
  • 嘉峪关做网站做ip资讯的网站
  • 爱网站黄页网站推广广告申请
  • 微网站首选公司吉林省吉林市地图
  • 成都微信网站建设公wordpress 换服务器
  • 毕业设计网站前端代做未来网站发展方向
  • 温州 网站建设公司不成立公司怎么做企业网站
  • 时代创信网站设计 北京wordpress 做图片站
  • 绿色科技网站建设云南建设学院的网站
  • 网站优化三要素php网站开发怎么接私活
  • 网站开发需要多少钱服务在哪里买域名
  • 高端网站设计公司江西机场建设集团网站
  • 网站推广方案的构成企业黄页网站源码
  • 做网站跟赚钱嘛wordpress api下载
  • 车牌照丢失能在网站做吗福州商城网站开发公司
  • 东营网签查询系统官方网站苏州做网站要多少钱
  • 微投票网站wordpress实战教程 pdf
  • 有网站的源代码怎么生成网站网站开发平台及常用开发工具