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

怎么在手机上制作网站开通网站空间

怎么在手机上制作网站,开通网站空间,网站开发课程设计建议,个人备案转企业网站期间目录 一、什么是 MyBatis-Plus 自动填充? 🤔二、自动填充的原理 ⚙️三、实际例子:创建时间和更新时间字段自动填充 ⏰四、注意事项 ⚠️五、总结 🎉 🌟我的其他文章也讲解的比较有趣😁,如果喜欢…

在这里插入图片描述

目录

    • 一、什么是 MyBatis-Plus 自动填充? 🤔
    • 二、自动填充的原理 ⚙️
    • 三、实际例子:创建时间和更新时间字段自动填充 ⏰
    • 四、注意事项 ⚠️
    • 五、总结 🎉

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗!

🌟了解 MyBatis-Plus 逻辑删除请看: MyBatis-Plus 逻辑删除:让数据“消失”却不真正删除的秘密!

其他优质专栏: 【🎇SpringBoot】【🎉多线程】【🎨Redis】【✨设计模式专栏(已完结)】…等

如果喜欢作者的讲解方式,可以点赞收藏加关注,你的支持就是我的动力
✨更多文章请看个人主页: 码熔burning

一、什么是 MyBatis-Plus 自动填充? 🤔

MyBatis-Plus 自动填充是指在执行 insertupdate 操作时,自动为某些字段设置值,而无需手动在代码中进行赋值。 这对于一些通用字段(如创建时间、更新时间、创建人、修改人等)非常有用,可以减少重复代码,提高开发效率,并保证数据的一致性。 🚀

二、自动填充的原理 ⚙️

MyBatis-Plus 通过拦截器机制,在执行 SQL 语句之前,根据配置的规则,自动为指定的字段设置值。

自动填充的实现步骤 📝

  1. 定义实体类字段: 在实体类中定义需要自动填充的字段,并使用 MyBatis-Plus 提供的注解进行标记。
  2. 编写填充处理器: 创建一个类,实现 MyBatis-Plus 提供的 MetaObjectHandler 接口,并在该类中编写填充逻辑。
  3. 配置 MyBatis-Plus: 在 MyBatis-Plus 的配置中,注册填充处理器。

三、实际例子:创建时间和更新时间字段自动填充 ⏰

假设我们有一个 User 实体类,其中包含 createTimeupdateTime 两个字段,分别表示创建时间和更新时间。

1. 定义实体类字段

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.io.Serializable;
import java.time.LocalDateTime;@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user")
public class User extends Model<User> {private static final long serialVersionUID = 1L;@TableIdprivate Long id;private String name;private Integer age;private String email;@TableField(fill = FieldFill.INSERT) // 插入时填充字段private LocalDateTime createTime;@TableField(fill = FieldFill.INSERT_UPDATE) // 插入和更新时填充字段private LocalDateTime updateTime;@Overrideprotected Serializable pkVal() {return this.id;}}

解释:

  • @TableField(fill = FieldFill.INSERT):表示该字段在执行 insert 操作时进行填充。
  • @TableField(fill = FieldFill.INSERT_UPDATE):表示该字段在执行 insertupdate 操作时进行填充。
  • LocalDateTime:这里使用 LocalDateTime 作为时间类型,也可以使用 DateInstant 等。

2. 编写填充处理器

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.time.LocalDateTime;@Slf4j
@Component // 不要忘记加Component注解
public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {log.info("start insert fill ....");this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)this.strictInsertFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());}@Overridepublic void updateFill(MetaObject metaObject) {log.info("start update fill ....");this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)}
}

解释:

  • MyMetaObjectHandler 类实现了 MetaObjectHandler 接口。
  • insertFill 方法:在执行 insert 操作时,会调用该方法。 我们在这里为 createTimeupdateTime 字段设置当前时间。
  • updateFill 方法:在执行 update 操作时,会调用该方法。 我们在这里为 updateTime 字段设置当前时间。
  • strictInsertFillstrictUpdateFill 方法:是 MyBatis-Plus 3.3.0 版本之后推荐使用的填充方法,更加安全和严格。 它们会检查字段是否存在,类型是否匹配,以及是否已经有值,避免覆盖已有值。
  • @Component:将该类注册为 Spring Bean,以便 MyBatis-Plus 可以自动发现它。

3. 配置 MyBatis-Plus

在 Spring Boot 的配置文件(例如 application.ymlapplication.properties)中,不需要显式配置 MyBatis-Plus 的自动填充功能。 只要你的填充处理器类被 Spring 管理(例如通过 @Component 注解),MyBatis-Plus 就会自动识别并使用它。 🎉

使用示例 🚀

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
public class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testInsert() {User user = new User();user.setName("testUser");user.setAge(25);user.setEmail("test@example.com");int result = userMapper.insert(user);System.out.println("影响行数:" + result);System.out.println("插入后的用户ID:" + user.getId());System.out.println("插入后的用户创建时间:" + user.getCreateTime());System.out.println("插入后的用户更新时间:" + user.getUpdateTime());}@Testpublic void testUpdate() {User user = userMapper.selectById(1L); // 假设ID为1的用户存在user.setName("updatedUser");int result = userMapper.updateById(user);System.out.println("影响行数:" + result);System.out.println("更新后的用户更新时间:" + user.getUpdateTime());}
}

解释:

  • testInsert 方法中,我们创建了一个 User 对象,并设置了 nameageemail 字段。 createTimeupdateTime 字段没有手动设置。
  • 执行 userMapper.insert(user) 后,MyBatis-Plus 会自动调用 MyMetaObjectHandlerinsertFill 方法,为 createTimeupdateTime 字段设置当前时间。
  • testUpdate 方法中,我们先查询出一个 User 对象,然后修改了 name 字段。 updateTime 字段没有手动设置。
  • 执行 userMapper.updateById(user) 后,MyBatis-Plus 会自动调用 MyMetaObjectHandlerupdateFill 方法,为 updateTime 字段设置当前时间。

四、注意事项 ⚠️

  • 确保你的填充处理器类被 Spring 管理(例如通过 @Component 注解)。
  • 使用 strictInsertFillstrictUpdateFill 方法可以避免覆盖已有值。
  • 如果你的字段类型不是 LocalDateTime,需要根据实际类型进行调整。
  • 如果你的字段名不是 createTimeupdateTime,需要在填充处理器中修改字段名。
  • 如果你的数据库字段类型是 TIMESTAMP,建议使用 LocalDateTimeInstant 作为 Java 类型,并配置相应的类型处理器。
  • 如果你的数据库字段类型是 DATE,建议使用 LocalDate 作为 Java 类型。

五、总结 🎉

MyBatis-Plus 的自动填充功能可以极大地简化开发,提高效率,并保证数据的一致性。 通过定义实体类字段、编写填充处理器和配置 MyBatis-Plus,可以轻松实现创建时间和更新时间字段的自动填充。 希望篇文章能够帮助你理解和使用 MyBatis-Plus 的自动填充功能。 🥳


文章转载自:

http://0hZM2s1t.tsnwf.cn
http://D5UnD443.tsnwf.cn
http://BU7jaiFz.tsnwf.cn
http://yl2PQe95.tsnwf.cn
http://q9H9Nwxf.tsnwf.cn
http://lTczrGhg.tsnwf.cn
http://NGXglucC.tsnwf.cn
http://IS6ZIdek.tsnwf.cn
http://X7Sdb091.tsnwf.cn
http://rIwWmrZu.tsnwf.cn
http://gIZBK0WR.tsnwf.cn
http://ExerFepq.tsnwf.cn
http://MGyhWfr0.tsnwf.cn
http://4Y5SwfzB.tsnwf.cn
http://T8gUUVUi.tsnwf.cn
http://OZtWEdxq.tsnwf.cn
http://8tNKK9Hi.tsnwf.cn
http://KmXk9KOz.tsnwf.cn
http://x3ms4XqP.tsnwf.cn
http://MucarQDx.tsnwf.cn
http://0LVql2ax.tsnwf.cn
http://sAVgOFTg.tsnwf.cn
http://241GTaaU.tsnwf.cn
http://0dm5OvJv.tsnwf.cn
http://zl56pbMR.tsnwf.cn
http://2Pq5sYdH.tsnwf.cn
http://Q3uXT9SY.tsnwf.cn
http://QP4ZNd2a.tsnwf.cn
http://VwSr9LR3.tsnwf.cn
http://5FNUsQMx.tsnwf.cn
http://www.dtcms.com/wzjs/676956.html

相关文章:

  • 汕头网站快速排名佛山网站设计特色
  • 昆明网络公司网站建设建设玩外汇平台网站
  • 南宁网站建设超博网络学雷锋 做美德少年网站
  • 2万元建设网站贵吗谷歌seo搜索引擎
  • 寺院网站建设方案互联网行业怎么赚钱
  • 建设网站对服务器有什么要求吗网站平台搭建
  • 注册了网站之后怎么设计自驾游自由行网站建设
  • 站酷网站建设网站举报中心官网
  • 书店网站建设方案网站建设教程怎么建
  • 网站快速备案安全吗网站流量怎么变现呢
  • 成都淮洲新城建设投资有限公司网站手机排行榜2021销量排行
  • 公司给别人做的网站违法吗中国室内设计联盟app
  • 网站设计兼容模式wordpress外网访问不了
  • pc蛋蛋游戏体验网站建设做的网站图片不显示
  • 电子商务网站建设设计网站服务器放在哪里好
  • 东莞网站建设多长时间红酒企业网站模板免费下载
  • 买完域名后如何建设网站瑞诺国际的员工数量
  • 网站推广排名外包飞天云服务器
  • 做哪种网站流量上的快网站规划与建设 ppt
  • 网站服务器环境搭建做网站建设的一般在哪儿找
  • 青海建设局网站网站设计 联系
  • 深圳做网站(信科网络)办公室装修设计效果图免费
  • 专业的南京网站建设网站开发都用什么
  • 网站开发岗位简介网站建设艾瑞市场分析
  • 网站怎样绑定域名创意平面设计公司公司排名
  • 企业网站建设相关书籍在线阅读网络营销组合策略
  • 山东省住房城乡建设厅查询网站济南seo外包服务
  • 基于阿里云的网站开发佛山网站营销推广
  • 建设网站cmswordpress模板建站教程
  • 企业网站长度网站建设与运营成本