关于#bug#的问题,如何解决?

出现这样的事情是什么?
debug页面:

img

img

代码:

public void add(EmployeeDTO employeeDTO) {
        Employee employee = new Employee();
        //密码默认123456
        employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
        //设定创建时间和修改时间
        employee.setCreateTime(LocalDateTime.now());
        employee.setUpdateTime(LocalDateTime.now());

        employeeMapper.add(employee);
    }

你的add方法中,就是创建一个新的Employee且只给它设置了3个值,它们与EmployeeDTO没有关系,是两个不同的对象。
对于两个对象中同名且类型相同的变量,可以使用org.springframework.beans.BeanUtils.copyProperties()方法,也可以使用其它类似的工具类,如apache-commons。

你不是没有把你employeeDTO的值放进employee 对象里边么,要么你就一个一个往employee里边set employeeDTO里边的值,要么就使用
BeanUtils.copyProperties(employeeDTO,employee ); 把共同属性的值一下复制进去

你在这个函数里面只set了密码和创建时间、更新时间、所以其他属性是null(除非你在constructor函数中设置了默认值), 而且密码用了加密函数,所以不是显示明文123456

有用的话麻烦点个采纳哦 谢谢啦

Employee employee = new Employee();

在这一行下面添加,需要将employeeDTO的属性赋值给employee,这个操作也就是常见的对象convert

employee.setUsername(employeeDTO.getUsername());
employee.setSex(employeeDTO.getSex());
...
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7775979
  • 除此之外, 这篇博客: 隐藏了2年的Bug,终于连根拔起,悲观锁并没有那么简单中的 何谓悲观锁 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 悲观锁是在对数据被的修改持悲观态度,在整个数据处理过程中会将数据锁定。

    悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在应用层中实现了加锁机制,也无法保证外部系统不会修改数据)。

    通常会使用select … for update语句来实现对数据的枷锁。

    for update仅适用于InnoDB,且必须在事务块(BEGIN/COMMIT)中才能生效。在进行事务操作时,通过“for update”语句,MySQL会对查询结果集中每行数据都添加排他锁,其他线程对该记录的更新与删除操作都会阻塞。排他锁包含行锁、表锁。

    如下示例展示了悲观锁的基本使用流程:

    set autocommit=0;  
    //设置完autocommit后,执行正常业务。具体如下:
    //0.开始事务
    begin;/begin work;/start transaction; (三者选一就可以)
    //1.查询出商品信息
    select status from t_goods where id=1 for update;
    //2.根据商品信息生成订单
    insert into t_orders (id,goods_id) values (null,1);
    //3.修改商品status为2
    update t_goods set status=2;
    //4.提交事务
    commit;/commit work;
    

    因为关闭了数据库自动提交,这里通过begin/commit来管理事务。

    使用select…for update的方式通过数据库实现了悲观锁。其中,id为1的那条数据就被锁定,其它的事务必须等本次事务提交之后才能执行。这样就保证了在操作期间数据不会被其它事务修改。

  • 您还可以看一下 唐宇迪老师的深度学习-行人重识别实战(2020最新)课程中的 进入debug模式解读网络计算流程小节, 巩固相关知识点