记录一下写项目时的小Tips

1.Mybaits plus的逻辑删除:

总所周知,mp的使用能够简化我们CURD的过程,当我们用mp删除一个数据的时候,注意一般的删除都是逻辑删除

如上,我们的DeFlag是删除标识:0代表没有删除,1代表删除了,我们如何把删除做成软删除呢?

yml里配置就行:

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: delFlag  # 指定逻辑删除字段名
      logic-delete-value: 1         # 指定逻辑删除标记值
      logic-not-delete-value: 0     # 指定逻辑未删除标记值
      id-type: auto

2.公共字段填充:

如creatTime,updateTime这些数据,我们在insert或者update的时候就会同步修改。

如何自动设置同步更新呢?

1.我们可以先把公共属性抽成一个类:

别的类可以继承它

@Data
public class BaseDO {
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

    /**
     * 删除标识 0:未删除 1:已删除
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer delFlag;
}

2.持久层实体对象属性填充

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler{
    @Override
    public void insertFill(MetaObject metaObject) {
        strictInsertFill(metaObject, "createTime", Date::new, Date.class);
        strictInsertFill(metaObject, "updateTime", Date::new, Date.class);
        strictInsertFill(metaObject, "delFlag",() -> 0,Integer.class);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
    }
}

3.对我们的敏感信息加密:

比如身份证号,家庭住址加密

ShardingSphere 提供完整、透明、安全、低成本的数据加密及脱敏解决方案。

在yml进行配置

rules:
  # 数据加密存储规则
  - !ENCRYPT
    # 需要加密的表集合
    tables:
      # 用户表
      t_user:
        # 用户表中哪些字段需要进行加密
        columns:
          # 手机号字段,逻辑字段,不一定是在数据库中真实存在
          phone:
            # 手机号字段存储的密文字段,这个是数据库中真实存在的字段
            cipherColumn: phone
            # 身份证字段加密算法
            encryptorName: common_encryptor
          mail:
            cipherColumn: mail
            encryptorName: common_encryptor
        # 是否按照密文字段查询
        queryWithCipherColumn: true
    # 加密算法
    encryptors:
      # 自定义加密算法名称
      common_encryptor:
        # 加密算法类型
        type: AES
        props:
          # AES 加密密钥
          aes-key-value: d6oadClrrb9A3GWo

4.Mybaits plus分页插件配置

@Configuration
public class DateBaseConfiguration {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;

    }
}

这段配置的作用是将 MyBatis Plus 的分页功能集成到 Spring Boot 项目中,使得在进行数据库查询时可以方便地使用 MyBatis Plus 提供的分页查询功能,而无需手动编写分页查询的 SQL 语句。


5.信息脱敏处理

脱敏并非加密,比如手机号:123456,脱敏后查到的数据是12**56这样

​
/**
 * 手机号脱敏反序列化
 */
public class PhoneDesensitizationSerializer extends JsonSerializer<String> {

    @Override
    public void serialize(String phone, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        String phoneDesensitization = DesensitizedUtil.mobilePhone(phone);
        jsonGenerator.writeString(phoneDesensitization);
    }
}

​

然后对应的实体类,手机号属性

    /**
     * 手机号
     */
    @JsonSerialize(using = PhoneDesensitizationSerializer.class)
    private String phone;

这样就做到了脱敏处理。


6.SQL命令可以对数据插入并更新

@Insert("INSERT INTO t_link_access_stats (XX,XX,XX,XX) " +
        "VALUES( " +
        "#{linkAccessStats.XX}, #{linkAccessStats.XX}, #{linkAccessStats.XX}, #{linkAccessStats.XX})" +
        " ON DUPLICATE KEY UPDATE" +
        " XX = XX +  #{linkAccessStats.XX}, " +
        "XX = XX + #{linkAccessStats.XX}, " +
        " XX = XX + #{linkAccessStats.XX};")

ON DUPLICATE KEY UPDATE:

当我们插入的key都重复了,不会执行插入操作,而是后面的 update

key存在不重复的,执行insert

相关推荐

  1. 一个标准项目说明书大纲

    2024-03-22 07:14:03       6 阅读
  2. 创建链表一个bug

    2024-03-22 07:14:03       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 07:14:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 07:14:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 07:14:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 07:14:03       18 阅读

热门阅读

  1. 音视频实战---音频重采样

    2024-03-22 07:14:03       14 阅读
  2. Python:编程语言之魅力

    2024-03-22 07:14:03       17 阅读
  3. ARM实验,串口控制LED亮灭

    2024-03-22 07:14:03       17 阅读
  4. 面向C++程序员的Rust教程(一)

    2024-03-22 07:14:03       18 阅读
  5. LeetCode 746. 使用最小花费爬楼梯

    2024-03-22 07:14:03       20 阅读
  6. 【WPF应用4】WPF界面对象编辑

    2024-03-22 07:14:03       19 阅读
  7. uni-app开发---4.首页

    2024-03-22 07:14:03       15 阅读
  8. CDH中重装Kafka

    2024-03-22 07:14:03       18 阅读
  9. RPC浅析,加密数据解析

    2024-03-22 07:14:03       20 阅读
  10. Ubuntu 中如何解压缩文件

    2024-03-22 07:14:03       20 阅读
  11. SQLExecDirect执行完后需要清理

    2024-03-22 07:14:03       21 阅读