常用工具代码

我们在使用任何一款软件或者平台的时候,注册完成我们都会有一个默认头像,且这个头像是随机的,那么大家知道是怎么做的吗?
请往下看!

生成随机头像

此部分代码直接写在该接口的实现类中即可

//放在CDN上的头像
private static final String [] headImg = {
        "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
        "https://图片的地址1",
        "https://图片的地址2",
        "https://图片的地址3"
};
private String getRandomImg(){
    int size = headImg.length;
    Random random = new Random();
    int index = random.nextInt(size);   //产生随机下标
    return headImg[index];
}

将密码进行MD5加密

首先,我们为了代码结构规范,需要在 utils包 中新建一个公共工具类CommonUtils,然后在这个公共工具类中编写MD5加密工具类:

import java.security.MessageDigest;

public class CommonUtils {
    //MD5加密工具类
    public static String MD5(String data) {
        try {
            java.security.MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] array = md.digest(data.getBytes("UTF-8"));
            StringBuilder sb = new StringBuilder();
            for (byte item : array) {
                sb.append(Integer.toHexString((item & 0xFF) | 0x100).substring(1, 3));
            }
            return sb.toString().toUpperCase();
        } catch (Exception exception) {

        }
        return null;
    }
}

该接口的实现类

我用的是SpringBoot框架哦!

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public int save(Map<String, String> userInfo) {
        User user = parseToUser(userInfo);
        if (user != null){
            return userMapper.save(user);
        } else {
            return -1;
        }
    }

    /**
     * 解析 user 对象
     * @param userInfo
     * @return
     */
    private User parseToUser(Map<String, String> userInfo) {
        if (userInfo.containsKey("phone") && userInfo.containsKey("pwd") && userInfo.containsKey("name")){
            User user = new User();
            user.setName(userInfo.get("name"));
            user.setHeadImg(getRandomImg());
            user.setCreateTime(new Date());
            user.setPhone(userInfo.get("phone"));
            String pwd = userInfo.get("pwd");
            //MD5加密
            user.setPwd(CommonUtils.MD5(pwd));
            return user;
        } else {
            return null;
        }
    }

    //放在CDN上的头像
    private static final String [] headImg = {
        "https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png",
        "https://图片的地址1",
        "https://图片的地址2",
        "https://图片的地址3"
    };
    private String getRandomImg(){
        int size = headImg.length;
        Random random = new Random();
        int index = random.nextInt(size);   //产生随机下标
        return headImg[index];
    }
}

Mybatis-plus-generator代码自动化生成工具

  • 底层是模板引擎技术,可以自定义生成的Java类模板
  • 基础版mybatis-genarator
  • 进阶版mybatis-plus-genarator
  • 添加依赖:统一Common项目添加,各个项目测试类里面配置

代码自动生成依赖

<!-- 代码自动生成依赖 begin -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- velocity -->
<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.0</version>
<!--<scope>provided</scope>-->
</dependency>
<!-- 代码⾃动⽣成依赖 end-->

代码(标记TODO的记得修改)

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class MyBatisPlusGenerator {
    public static void main(String[] args) {
        //1. 全局配置
        GlobalConfig config = new GlobalConfig();
        // 是否支持AR模式
        config.setActiveRecord(true)
                // 作者
                .setAuthor("二炮")
                // 生成路径,最好使用绝对路径,Mac路径是不一样的
                // 比如我这样配置,那么就是在D盘的Project文件夹里的test文件夹中生成文件
                //TODO  TODO  TODO  TODO
                .setOutputDir("D:\\Project/test")
                // 文件覆盖
                .setFileOverride(true)
                // 主键策略
                .setIdType(IdType.AUTO)

                .setDateType(DateType.ONLY_DATE)
                // 设置生成的service接口的名字的首字母是否为I,默认Service是以I开头的
                .setServiceName("%sService")

                //实体类结尾名称
                .setEntityName("%sDO")

                //生成基本的resultMap
                .setBaseResultMap(true)

                //不使用AR模式
                .setActiveRecord(false)

                //生成基本的SQL片段
                .setBaseColumnList(true);

        //2. 数据源配置
        DataSourceConfig dsConfig = new DataSourceConfig();
        // 设置数据库类型
        dsConfig.setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.cj.jdbc.Driver")
                // 根据需要修改‘数据库名称’、‘用户名’、‘密码’
                //TODO  TODO  TODO  TODO
                .setUrl("jdbc:mysql://127.0.0.1:3306/数据库名称?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC")
                .setUsername("用户名")
                .setPassword("密码");

        //3. 策略配置globalConfiguration中
        StrategyConfig stConfig = new StrategyConfig();

        //全局大写命名
        stConfig.setCapitalMode(true)
                // 数据库表映射到实体的命名策略
                .setNaming(NamingStrategy.underline_to_camel)

                //使用lombok
                .setEntityLombokModel(true)

                //使用restcontroller注解
                .setRestControllerStyle(true)

                // 生成的表, 支持多表一起生成,以数组形式填写
                //TODO  TODO  TODO  TODO
                .setInclude("数据表1","数据表2");

        //4. 包名策略配置
        PackageConfig pkConfig = new PackageConfig();
        // 下面的setParent("erpao"),erpao要根据自己的包来写
        //TODO  TODO  TODO  TODO
        pkConfig.setParent("erpao")
                .setMapper("mapper")
                .setService("service")
                .setController("controller")
                .setEntity("model")
                .setXml("mapper");

        //5. 整合配置
        AutoGenerator ag = new AutoGenerator();
        ag.setGlobalConfig(config)
                .setDataSource(dsConfig)
                .setStrategy(stConfig)
                .setPackageInfo(pkConfig);

        //6. 执行操作
        ag.execute();
        System.out.println("======= 二炮 -- 相关代码生成完毕  ========");
    }
}

OK,到此完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二炮

你的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值