美文网首页
写一个自己的platEntity模块

写一个自己的platEntity模块

作者: 樊不樊 | 来源:发表于2021-01-30 09:58 被阅读0次

一,引入platEntity模块

为什么要写一个这个模块?它的作用是什么?

有一些场景,比如新增一个用户,实体类User类

public class Test {
    private Integer id;
    private String name;
    private String account;
    private String password;
}

其中密码字段是要加密之后存储到数据库的,我们平时的操作是什么?从前台传来的password字段取出并手动进行加密,然后存入User表,取出的时候还需要进行解密,然后返回明文密码的列表。

platEntity简化了这一切加解密的过程,使用platEntity之后再也不用手动加解密,只需要一个注解就可以实现复杂的逻辑,而且使用灵活方便,可以控制加密方式,是否加密,返回的列表中的字段值是否要解密。

如何使用?

使用方式也很简单,该platEntity模块已经上传到我的私服,如果兄弟们感兴趣的话可以尝试着用一下,不好用不收钱哈!

首先在pom.xml配置私服

    <repositories>
        <repository>
            <id>maven-ossez</id>
            <name>OSSEZ Repository</name>
            <url>http://nexus.tiger2.cn/nexus/content/groups/public/</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>maven-ossez</id>
            <name>OSSEZ Repository</name>
            <url>http://nexus.tiger2.cn/nexus/content/groups/public/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

然后引入模块坐标

        <dependency>
            <groupId>com.rain.platentity</groupId>
            <artifactId>rain-platentity</artifactId>
            <version>1.2</version>
        </dependency>

最后不要忘记在启动类上方要加上包扫描,如果扫描不到也是不起作用的!配置com.rain.platentity

@ComponentScan(basePackages = {"你们自己的包位置","com.rain.platentity"})

二,使用方式

使用方式很简单,哪个实体类的哪个属性需要加密处理,就在该实体类上加一个@EncryptDecryptClass注解即可,然后在那个具体要加密的属性上加一个@EncryptDecryptField注解,就OK了!

<font color="red">前提:与数据库交互使用的框架是Mybatis才可使用此模块,因为用到了Mybatis拦截器!</font>

@EncryptDecryptClass
public class Test {
    private Integer id;
    private String name;
    private String account;

    @EncryptDecryptField
    private String password;
}

其中属性注解@EncryptDecryptField的内容如下

    String type() default "RSA";

    boolean ParamEncrypt() default true;

    boolean resultEncrypt() default true;
  1. 默认加密方式是RSA,可以通过type="SM4"来动态指定(不过本模块暂时只支持RSA加密,SM4没来得及更新上)
  2. ParamEncrypt="true/false"来指定该字段存入到表时是否需要进行加密,默认是需要加密的
  3. resultEncrypt="true/false"来指定从表里查出来的列表,该字段是否需要解密,默认是需要解密的,如果为false,那么查出来的字段值则为密文

注意!如果ParamEncrypt已经为false了,就不要指定resultEncrypt为true了,因为都没有加密,所以解密肯定会报错了!

如果有对源码感兴趣的朋友,直接访问下方的github地址,来一波星星吧!阿门!

源码地址

https://github.com/fantongxue666/Rain/tree/master/rain-platentity

相关文章

  • 写一个自己的platEntity模块

    一,引入platEntity模块 为什么要写一个这个模块?它的作用是什么? 有一些场景,比如新增一个用户,实体类U...

  • 2.模块(2)

    我们还可以自己写模块是不是 那么我们自己个模块 模块名字不要用中文哈 我们自己写一个哈哈哈 简单吧,是不是不屑的眼...

  • 写一个自己的Thunkify模块

    什么是Thunk函数 本段内容无耻抄袭自阮一峰的《ESMAScript 6 入门》中对Thunk函数的介绍 Thu...

  • Day10--作业:优化学生管理系统

    思路:1、写一个模块,用于打印各类界面:模块名称:face2、写一个模块,用于学生操作:模块名称:operatin...

  • 关于编程的一点感想

    要形成自己写模块,写框架,写工具的思维

  • node.js中module.exports

    在写node.js代码时,我们经常需要自己写模块(module)。同时还需要在模块最后写好模块接口,声明这个模块对...

  • module.exports用法

    module.exports 对象是由模块系统创建的。在我们自己写模块的时候,需要在模块最后写好模块接口,声明这个...

  • 终于讲清楚了nodejs中exports和module.expo

    module.exports 对象是由模块系统创建的。在我们自己写模块的时候,需要在模块最后写好模块接口,声明这个...

  • 如何写一个floodlight模块

    [译]如何写一个floodlight模块 目标 这里完成一个floodligth模块,这个模块可以监听新的MAC地...

  • django怎么调用自己写的模块

    在django中引入自定义模块,方法如下: python的模块查找原理是这样的: 1、先在当前文件目录下查找。 2...

网友评论

      本文标题:写一个自己的platEntity模块

      本文链接:https://www.haomeiwen.com/subject/vyphtltx.html