mybatis-plus 日期类型转换 前后端处理方法!

今天咱不讲什么新增修改自动操作的东西,这个mysql自己就支持。

为了搞定这个东西我搜了贼多资料,但是大部分都是水文,害,都是讲上面那个东西,一点用都没有!

咱来点使用的东西。

前端 -> 入库

如果你的前端能直接给你传一个日期型当然最好啦!不过大部分都是直接传一个字符串。

那么我们就需要手动转换成LocalDateTime类型了,为什么是这个类型?

因为mybatis-plus支持用这个类型帮我们映射。

如果支持字符串映射就好咯!

可能有,但我不知道!

mybatis-plus自动生成的类中,时间类型的属性就是这个类型。

@Data
@TableName("user_text")
public class UserText {

  @TableId(value = "user_id", type = IdType.AUTO)
  private long userId;
  private String userName;
  private Sex userSex;

  @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm",timezone="Asia/Shanghai")
  private LocalDateTime startTime;

}

所以我们需要手动将字符串转换类型。

/**
 * 日期类型处理
 * @author linnine
 */
public class DateUtil{

    /**
     * 中文日期格式
     */
    public static final String DATE_CN_FORMAT ="yyyy年MM月dd日 HH:mm";
    /**
     * 用于将前端传来的字符串转换成插入数据库的格式
     * @return
     */
    public static LocalDateTime getSqlDateTime(String dateCnStr){
    	//自己加正则判断
        DateTimeFormatter df = DateTimeFormatter.ofPattern(DATE_CN_FORMAT);
        return LocalDateTime.parse(dateCnStr,df);
    }
}

然后我们插入的时候就这么插,虽然麻烦了点,但确实有效。

@Test
    void user1TextService(){
    
        UserText userText = new UserText();
        userText.setStartTime(DateUtil.getSqlDateTime("2021年05月20日 05:20"));
        userTextService.save(userText);
    }

出库 -> 前端

要返回给前端就简单多了,看到我上面 日期类型的字段 上面那个注解就可以实现了。

@JsonFormat(pattern = "yyyy年MM月dd日 HH:mm",timezone="Asia/Shanghai")
  private LocalDateTime startTime;

不过我们在控制台是看不到的,这个是返回给前端,转换成json才生效的。
经验分享 程序员 微信小程序 职场和发展