MySQL实现注册时随机生成数字id,类似于注册qq时随机生成qq号

本文介绍了一种使用Java生成随机ID的方法,并确保其在数据库中唯一性的过程。通过生成随机数并检查数据库中是否存在相同的ID,若存在则重新生成,直至找到唯一的ID进行插入。

  首先根据长度需求通过java的随机函数java.util.Random生成随机数,如希望得到5位随机id,则可以使用如下语句

      int r = (new Random()).nextInt()%89999;
      int id = 10000 + Math.abs(r);

  第二步,检查数据库内是否已经存在该id。可以通过查询该id是否有结果来判断。如果不存在则直接插入,否则重新生成随机数。

 

  以下为完整代码:

  

  public void reg(String username, String password){
    Connection conn = null;
    PreparedStatement ptmt = null;
    ResultSet rs = null;

    try{
      conn = DBHelper.getConnection();

      while(true){
        int r = (new Random()).nextInt()%89999;
        int id = 10000 + Math.abs(r);
        String sql = "select * from employee where id=?;";
        ptmt = conn.prepareStatement(sql);
        ptmt.setInt(1, id);
        rs = ptmt.executeQuery();
        if(!rs.next()){
          sql = "insert into employee(id, employeename, psw) value"
            + "(?,?,?)";
          ptmt = conn.prepareStatement(sql);
          ptmt.setInt(1, id);
          ptmt.setString(2, username);
          ptmt.setString(3, password);
          ptmt.execute();
          break;
        }
      }
    }catch(Exception ex){
      ex.printStackTrace();
    }finally{
      if(ptmt != null){
        try{
          ptmt.close();
        }catch(Exception ex){
          ex.printStackTrace();
        }
      }
      if(rs != null){
        try{
          rs.close();
        }catch(Exception ex){
          ex.printStackTrace();
        }
      }

    }
  }

转载于:https://www.cnblogs.com/shiyingzhi/p/7389839.html

这个项目符合作业吗我们通过这七周的学习,学习了SpringBoot+Mybatis的基本开发流程。 在controller控制器层: 我们学习包含@RequestMapping注解、@RestController注解、@GetMapping注解、@RequestParam注 解、@Autowired注解、@Qualifier注解 的用法及作用,也带大家了解了@Resource、@PostMapping、@RequestBody注解的作用。 在service业务层: 我们学习了@Service注解,以及接口式开发流程,通过业务层接口以及业务层实现类,去实现一个功 能业务的开发。 在Mapper层: 我们学习了Mybatis框架与Spirng框架的结合,通过@Mapper注解、@Pararm注解、@MapperScan注解 (作用于启动类上),然后我们又学习MyabtisMapper.xml这个配置文件,使用mybatis的专有增删改 查的用法,接口service层去实现数据库的持久化,实现项目开发。作业: 我们下周需要上交下方作业,基于Springboot+Mybatis+MySql写一个后端开发模块,需要基于 controller->service->mybatis三层开发流程。有问题可以问我,笔记中也有实现过程, controller层接口只需要使用get请求即可。 必交:开发用户模块(用户注册、用户登录): 1、用户注册实现简单的用户注册功能,前端传递给后端必备三个参数,用户名(作为主键,保证 每个用户用户名不重复)、用户密码、确认的用户密码,可以有其余参数(如用户年龄、性别等等 等等),我们通过这个三个必备参数,去进行用户注册,在service层判断参数准确性,用户密码与 确认的密码两个密码是否一致,然后确认用户名是否存在,如果都满足条件,则可以对用户进行注 册,将用户数据储存到数据库。 2、用户登录:实现简单的用户登录功能,前端传递给后端两个参数,用户名及用户密码,判断账户 是否存在,若不存在则返回不存在账户,判断账户和密码是否匹配,若匹配则返回登录成功。 加分项(只提供思路,大家可选择写或不写,扩展可自行查阅资料,都是加分项): (一)用户模块: 1、登录注册可以添加验证码校验登录信息、可以配合第三方库实现短信或邮件激活账户。 2、注册可以不使用用户名作为唯一主键,可以搭配数据库自增主键,或者随机n位数字作为主键返回 用户(类似QQ),可以修改用户信息。 (二)信箱模块:作业: 我们下周需要上交下方作业,基于Springboot+Mybatis+MySql写一个后端开发模块,需要基于 controller->service->mybatis三层开发流程。有问题可以问我,笔记中也有实现过程, controller层接口只需要使用get请求即可。 必交:开发用户模块(用户注册、用户登录): 1、用户注册实现简单的用户注册功能,前端传递给后端必备三个参数,用户名(作为主键,保证 每个用户用户名不重复)、用户密码、确认的用户密码,可以有其余参数(如用户年龄、性别等等 等等),我们通过这个三个必备参数,去进行用户注册,在service层判断参数准确性,用户密码与 确认的密码两个密码是否一致,然后确认用户名是否存在,如果都满足条件,则可以对用户进行注 册,将用户数据储存到数据库。 2、用户登录:实现简单的用户登录功能,前端传递给后端两个参数,用户名及用户密码,判断账户 是否存在,若不存在则返回不存在账户,判断账户和密码是否匹配,若匹配则返回登录成功。 加分项(只提供思路,大家可选择写或不写,扩展可自行查阅资料,都是加分项): (一)用户模块: 1、登录注册可以添加验证码校验登录信息、可以配合第三方库实现短信或邮件激活账户。 2、注册可以不使用用户名作为唯一主键,可以搭配数据库自增主键,或者随机n位数字作为主键返回 用户(类似QQ),可以修改用户信息。 (二)信箱模块:作业: 我们下周需要上交下方作业,基于Springboot+Mybatis+MySql写一个后端开发模块,需要基于 controller->service->mybatis三层开发流程。有问题可以问我,笔记中也有实现过程, controller层接口只需要使用get请求即可。 必交:开发用户模块(用户注册、用户登录): 1、用户注册实现简单的用户注册功能,前端传递给后端必备三个参数,用户名(作为主键,保证 每个用户用户名不重复)、用户密码、确认的用户密码,可以有其余参数(如用户年龄、性别等等 等等),我们通过这个三个必备参数,去进行用户注册,在service层判断参数准确性,用户密码与 确认的密码两个密码是否一致,然后确认用户名是否存在,如果都满足条件,则可以对用户进行注 册,将用户数据储存到数据库。 2、用户登录:实现简单的用户登录功能,前端传递给后端两个参数,用户名及用户密码,判断账户 是否存在,若不存在则返回不存在账户,判断账户和密码是否匹配,若匹配则返回登录成功。 加分项(只提供思路,大家可选择写或不写,扩展可自行查阅资料,都是加分项): (一)用户模块: 1、登录注册可以添加验证码校验登录信息、可以配合第三方库实现短信或邮件激活账户。 2、注册可以不使用用户名作为唯一主键,可以搭配数据库自增主键,或者随机n位数字作为主键返回 用户(类似QQ),可以修改用户信息。 (二)信箱模块:作业: 我们下周需要上交下方作业,基于Springboot+Mybatis+MySql写一个后端开发模块,需要基于 controller->service->mybatis三层开发流程。有问题可以问我,笔记中也有实现过程, controller层接口只需要使用get请求即可。 必交:开发用户模块(用户注册、用户登录): 1、用户注册实现简单的用户注册功能,前端传递给后端必备三个参数,用户名(作为主键,保证 每个用户用户名不重复)、用户密码、确认的用户密码,可以有其余参数(如用户年龄、性别等等 等等),我们通过这个三个必备参数,去进行用户注册,在service层判断参数准确性,用户密码与 确认的密码两个密码是否一致,然后确认用户名是否存在,如果都满足条件,则可以对用户进行注 册,将用户数据储存到数据库。 2、用户登录:实现简单的用户登录功能,前端传递给后端两个参数,用户名及用户密码,判断账户 是否存在,若不存在则返回不存在账户,判断账户和密码是否匹配,若匹配则返回登录成功。 加分项(只提供思路,大家可选择写或不写,扩展可自行查阅资料,都是加分项): (一)用户模块: 1、登录注册可以添加验证码校验登录信息、可以配合第三方库实现短信或邮件激活账户。 2、注册可以不使用用户名作为唯一主键,可以搭配数据库自增主键,或者随机n位数字作为主键返回 用户(类似QQ),可以修改用户信息。 (二)信箱模块:作业: 我们下周需要上交下方作业,基于Springboot+Mybatis+MySql写一个后端开发模块,需要基于 controller->service->mybatis三层开发流程。有问题可以问我,笔记中也有实现过程, controller层接口只需要使用get请求即可。 必交:开发用户模块(用户注册、用户登录): 1、用户注册实现简单的用户注册功能,前端传递给后端必备三个参数,用户名(作为主键,保证 每个用户用户名不重复)、用户密码、确认的用户密码,可以有其余参数(如用户年龄、性别等等 等等),我们通过这个三个必备参数,去进行用户注册,在service层判断参数准确性,用户密码与 确认的密码两个密码是否一致,然后确认用户名是否存在,如果都满足条件,则可以对用户进行注 册,将用户数据储存到数据库。 2、用户登录:实现简单的用户登录功能,前端传递给后端两个参数,用户名及用户密码,判断账户 是否存在,若不存在则返回不存在账户,判断账户和密码是否匹配,若匹配则返回登录成功。 加分项(只提供思路,大家可选择写或不写,扩展可自行查阅资料,都是加分项): (一)用户模块: 1、登录注册可以添加验证码校验登录信息、可以配合第三方库实现短信或邮件激活账户。 2、注册可以不使用用户名作为唯一主键,可以搭配数据库自增主键,或者随机n位数字作为主键返回 用户(类似QQ),可以修改用户信息。 (二)信箱模块:1、用户可以通过指定邮箱发送邮件 2、用户可以查看发件箱(自己发送的邮件)、收件箱(别人发给自己的邮件)。 上交内容: 1、实验报告(word形式,包含实现功能的思路以及实现截图) 2、实验代码(你们spring项目的代码文件,完整的
最新发布
12-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值