entity 日期成员变量使用String与Date的问题
老师好,想请问为何我从DB中取得hotel类时,无论成员变量是Date还是String,都可以直接插回DB不报错? 我记得先前的课程有针对java.util.Date与java.sql.Date的区别,想请问:
一、资料从DB中取出后,日期成员为Date类时,不应该是java.util.Date吗,为何插入之前不用转换成java.sql.Date呢?
二、资料从DB中取出后,日期成员为String类时,直接插回去是否可理解为,MySQL DB中的Date字段本身就是可以接受String的输入,所以不会报错呢?
三、该如何理解正确理解取出的类对应到entity后,实例类中的日期现在是个什麽型别呢?
Hotel类
@Component
public class Hotel {
private Integer orderno;
private String city;
private Float price;
private String hotelname;
private Date arrivedate;
private Date leavedate;Dao类
public Hotel selectById(Integer oid){
String sql = "SELECT * FROM hotel WHERE orderno = ?";
Hotel hotel = jdbcTemplate.queryForObject(sql, new Object[]{oid}, new BeanPropertyRowMapper<Hotel>(Hotel.class));
return hotel;
}
public Integer insert(Hotel hotel){
String sql="INSERT INTO hotel VALUE(?, ?, ?, ?, ?, ?)";
Integer i = jdbcTemplate.update(sql, new Object[]{hotel.getOrderno(), hotel.getCity(), hotel.getPrice(), hotel.getHotelname(), hotel.getArrivedate(), hotel.getLeavedate()});
return i;
}Service类
@Test
public void insert() throws ParseException {
//取得现有的
Hotel hotel = hotelDao.selectById(10001);
//改一下id后插回去
hotel.setOrderno(10005);
//插入资料,i返回1笔成功
Integer i = hotelDao.insert(hotel);
System.out.println(i);
}正在回答
同学你好~
1.之前需要转换,是因为我们使用的是原生的JDBC技术。但是现在使用MyBatis之后,框架会自动帮我们完成日期对象的转换,所以不需要再进行手动转换了。
2.字符串和日期之间转换,通常是需要在mapper文件的sql中使用特定的函数完成的,建议同学检查一下mapper中是否使用了转换的函数。
3.实体类中的日期类型,除非有特别的处理,否则通常都是java.util.Date类型。
祝学习愉快~
- 参与学习 人
- 提交作业 8788 份
- 解答问题 9886 个
综合就业常年第一,编程排行常年霸榜,北上广深月薪过万! 不需要基础,无需脱产即可学习,只要你有梦想,想高薪! 全新升级:技术栈升级(包含VUE3.0,ES6,Git)+项目升级(前后端联调与功能升级)
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星