diff --git a/tamguo-crawler/src/main/java/com/tamguo/config/dao/MyMetaObjectHandler.java b/tamguo-crawler/src/main/java/com/tamguo/config/dao/MyMetaObjectHandler.java
index dad62b1..928b811 100644
--- a/tamguo-crawler/src/main/java/com/tamguo/config/dao/MyMetaObjectHandler.java
+++ b/tamguo-crawler/src/main/java/com/tamguo/config/dao/MyMetaObjectHandler.java
@@ -1,26 +1,43 @@
package com.tamguo.config.dao;
import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
-
import org.apache.ibatis.reflection.MetaObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * 注入公共字段自动填充,任选注入方式即可
+ * 该类用于注入公共字段自动填充功能,继承自MyBatis-Plus提供的MetaObjectHandler类。
+ * 可以通过继承并重写相关方法来实现自定义的字段自动填充逻辑,在代码中任选注入方式即可将其集成到MyBatis-Plus的操作流程中。
+ * (注:目前类上的@Component注解被注释掉了,意味着该类暂时可能未被作为Spring组件进行管理,后续若需要可取消注释启用相关功能)
*/
//@Component
public class MyMetaObjectHandler extends MetaObjectHandler {
+ // 创建一个Logger实例,用于记录日志,这里记录的日志类别是基于当前类MyMetaObjectHandler的,方便在日志中定位相关操作记录
protected final static Logger logger = LoggerFactory.getLogger(MyMetaObjectHandler.class);
+ /**
+ * 重写父类的insertFill方法,该方法会在执行数据插入操作时被触发。
+ * 通过日志记录了“新增的时候干点不可描述的事情”,实际应用中可在此方法内编写具体的逻辑,
+ * 例如自动填充创建时间、创建人等公共字段到插入的数据对象中,填充的数据会基于MetaObject所关联的具体数据库实体对象。
+ *
+ * @param metaObject 表示要进行插入操作的数据对应的MetaObject,通过它可以获取和设置对象的属性值等,
+ * 这个MetaObject通常与MyBatis操作的数据库实体对象相关联,方便进行字段填充等操作。
+ */
@Override
public void insertFill(MetaObject metaObject) {
logger.info("新增的时候干点不可描述的事情");
}
+ /**
+ * 重写父类的updateFill方法,该方法会在执行数据更新操作时被触发。
+ * 同样通过日志记录了“更新的时候干点不可描述的事情”,实际业务中可在此方法里编写更新时自动填充公共字段的逻辑,
+ * 比如更新时间等字段的自动赋值,也是基于MetaObject对应的数据库实体对象来操作相关属性值。
+ *
+ * @param metaObject 表示要进行更新操作的数据对应的MetaObject,作用同insertFill方法中的参数,用于操作相关对象的属性。
+ */
@Override
public void updateFill(MetaObject metaObject) {
logger.info("更新的时候干点不可描述的事情");
}
-}
+}
\ No newline at end of file
diff --git a/tamguo-crawler/src/main/java/com/tamguo/config/dao/MybatisPlusConfig.java b/tamguo-crawler/src/main/java/com/tamguo/config/dao/MybatisPlusConfig.java
index 9e18232..559fd03 100644
--- a/tamguo-crawler/src/main/java/com/tamguo/config/dao/MybatisPlusConfig.java
+++ b/tamguo-crawler/src/main/java/com/tamguo/config/dao/MybatisPlusConfig.java
@@ -16,10 +16,14 @@ import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
+// 标识这是一个配置类,Spring会自动扫描并处理这个类中的Bean定义等配置信息
@Configuration
+// 配置MyBatis-Plus的Mapper扫描路径,会扫描com.tamguo.dao及其子包下的所有Mapper接口
@MapperScan("com.tamguo.dao*")
public class MybatisPlusConfig {
+ // 定义一个名为performanceInterceptor的Bean方法,用于创建并返回PerformanceInterceptor实例
+ // PerformanceInterceptor通常用于拦截SQL执行,记录SQL执行性能相关的信息,比如执行时长等
@Bean
public PerformanceInterceptor performanceInterceptor() {
return new PerformanceInterceptor();
@@ -28,28 +32,35 @@ public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
* 文档:http://mp.baomidou.com
+ * 此方法用于创建并配置PaginationInterceptor分页插件实例,用于在MyBatis-Plus中实现分页功能。
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
- paginationInterceptor.setLocalPage(true);// 开启 PageHelper 的支持
+ // 设置开启PageHelper的支持,以便能更好地与PageHelper等分页相关的工具兼容使用
+ paginationInterceptor.setLocalPage(true);
+
/*
* 【测试多租户】 SQL 解析处理拦截器
* 这里固定写成住户 1 实际情况你可以从cookie读取,因此数据看不到 【 麻花藤 】 这条记录( 注意观察 SQL )
+ * 以下代码是配置多租户相关的SQL解析拦截逻辑,通过设置租户相关的处理器和解析器来处理涉及多租户的SQL语句。
*/
List sqlParserList = new ArrayList();
TenantSqlParser tenantSqlParser = new TenantSqlParser();
tenantSqlParser.setTenantHandler(new TenantHandler() {
+ // 获取租户ID对应的表达式,这里返回null,实际应用中通常需要按照业务规则返回正确的租户ID表达式
@Override
public Expression getTenantId() {
return null;
}
+ // 指定租户ID对应的数据库表列名,此处设置为"company_id",意味着在多租户场景下通过这个列来区分不同租户的数据
@Override
public String getTenantIdColumn() {
return "company_id";
}
+ // 判断是否对指定的表名进行过滤,返回true表示进行过滤,具体的过滤逻辑可以根据业务需求在这个方法内进一步完善
@Override
public boolean doTableFilter(String tableName) {
// 这里可以判断是否过滤表
@@ -57,9 +68,9 @@ public class MybatisPlusConfig {
}
});
-
sqlParserList.add(tenantSqlParser);
paginationInterceptor.setSqlParserList(sqlParserList);
+
// 以下过滤方式与 @SqlParser(filter = true) 注解等效
// paginationInterceptor.setSqlParserFilter(new ISqlParserFilter() {
// @Override
@@ -72,19 +83,23 @@ public class MybatisPlusConfig {
// return false;
// }
// });
+
return paginationInterceptor;
}
+ // 定义一个名为metaObjectHandler的Bean方法,用于创建并返回自定义的MetaObjectHandler实例(此处是MyMetaObjectHandler)
+ // MetaObjectHandler通常用于在插入或更新操作时自动填充一些公共字段,比如创建时间、更新时间等
@Bean
- public MetaObjectHandler metaObjectHandler(){
+ public MetaObjectHandler metaObjectHandler() {
return new MyMetaObjectHandler();
}
/**
* 注入sql注入器
+ * 以下代码原本是用于注入LogicSqlInjector,它可能用于实现一些逻辑删除等相关的功能,但目前被注释掉了,可能暂时不需要这个功能或者后续再启用。
*/
/*@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}*/
-}
+}
\ No newline at end of file
diff --git a/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperEntity.java b/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperEntity.java
index de1ba02..9c75133 100644
--- a/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperEntity.java
+++ b/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperEntity.java
@@ -6,25 +6,40 @@ import com.baomidou.mybatisplus.annotations.TableId;
/**
* 实体父类
+ * 该类作为实体类的基类,用于提供一些通用的属性和方法,方便其他具体的实体类继承,
+ * 从而实现代码的复用以及统一的结构规范,比如统一的主键处理等相关逻辑。
*/
public class SuperEntity> extends Model {
+ // 用于定义类的序列化版本号,在进行对象序列化和反序列化时起到版本控制的作用,保证兼容性。
+ // 这里初始化为1L,一般如果类的结构等没有发生不兼容的变更,这个值可以保持不变。
private static final long serialVersionUID = 1L;
- @TableId("id")
- private String id;
-
- @Override
- protected Serializable pkVal() {
- return this.getId();
- }
+ // 使用MyBatis-Plus提供的注解 @TableId 标记该属性为数据库表的主键字段,
+ // 这里指定对应的数据库表中的列名为 "id",意味着在与数据库交互时,通过该字段来标识唯一的记录。
+ @TableId("id")
+ private String id;
+
+ /**
+ * 重写父类Model中的pkVal方法,该方法用于获取实体对象的主键值。
+ * 在本类中,返回当前对象的id属性作为主键值,这样在MyBatis-Plus进行一些基于主键的操作(如查询、更新、删除等)时,
+ * 能正确获取到对应的主键信息进行数据库交互。
+ *
+ * @return 返回表示主键值的Serializable对象,在这里实际返回的是String类型的id属性值,
+ * 因为String实现了Serializable接口,符合方法的返回要求。
+ */
+ @Override
+ protected Serializable pkVal() {
+ return this.getId();
+ }
+ // 获取id属性值的方法,外部类可以通过调用该方法获取实体对象对应的主键值。
public String getId() {
return id;
}
+ // 设置id属性值的方法,外部类可以通过调用该方法为实体对象设置主键值,用于创建或更新实体对象时指定主键信息。
public void setId(String id) {
this.id = id;
}
-
-}
+}
\ No newline at end of file
diff --git a/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperMapper.java b/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperMapper.java
index 6b8b4cf..8cec75c 100644
--- a/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperMapper.java
+++ b/tamguo-crawler/src/main/java/com/tamguo/config/dao/SuperMapper.java
@@ -3,9 +3,16 @@ package com.tamguo.config.dao;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
- * 演示 mapper 父类,注意这个类不要让 mp 扫描到!!
+ * 演示 mapper 父类
+ * 该接口作为其他具体的Mapper接口的父接口,用于定义一些公共的方法或者规范,方便复用代码和统一接口结构。
+ * 注意这个类不要让 mp(MyBatis-Plus)扫描到!!
+ * 这可能是因为它只是作为一个抽象的父接口存在,本身不对应具体的数据库表操作,若被扫描到可能会引发一些不必要的问题,
+ * 比如不符合预期的实例化或者错误的数据库映射等情况,具体取决于项目的配置和MyBatis-Plus的扫描机制。
*/
public interface SuperMapper extends BaseMapper {
// 这里可以放一些公共的方法
-}
+ // 例如一些所有实体对应的Mapper都可能会用到的通用查询、通用更新逻辑等相关方法,
+ // 具体的方法定义需要根据实际业务需求来添加,然后由具体继承该接口的子类去实现这些方法,
+ // 从而实现代码复用以及保证操作的一致性和规范性。
+}
\ No newline at end of file