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才生效的。
