如果是非前后端分离的,一般把当前登录人信息存到session中,可以使用RequestContextHolder实现,我的新课程有讲解,课程地址:https://www.imooc.com/learn/1294,欢迎观看
自动填充类中,你调用的填充方法中,需要设置要填充的属性的类型,要和你实体类中待填充的属性的类型一致。
同学,你使用3.3.1.tmp版本试试,看看好不好使,我使用这个版本,debug时,看着调用的是BeanWrapper。
按我目前的实践来看,使用了mp提供的参数中包含实体类的插入或更新方法,如果你实现了自动填充功能,就会触发MetaObjectHandler中的相应方法,你可以参考我视频里讲的,在MetaObjectHandler中的相应方法中,某些场景下如果不需要执行方法中的业务逻辑是如何忽略的。
原因是这样的,那个自动填充方法,对你操作的每个类型的实体的insert和update都会拦截的。有的需求自动填充的不一定是时间,可能自动填充的值需要调用一连串方法获取或者获取的时间开销比较大。这时候使用hasSetter方法,来判断该实体是否具有该属性,如果有再调用那些方法获取值,然后进行填充,没有就根本不调用,减小开销。
我使用MP的版本是3.3.1.tmp。mysql数据库5.7。试验了一下自动填充,插入后不带毫秒数,没出现你这种情况。
嗯,是的,需要对源码有一定了解,这个hasSetter()方法,是MetaObject类的方法,它是Mybatis提供的操作对象的元数据信息的工具类。