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); }
10
收起
正在回答
1回答
同学你好~
1.之前需要转换,是因为我们使用的是原生的JDBC技术。但是现在使用MyBatis之后,框架会自动帮我们完成日期对象的转换,所以不需要再进行手动转换了。
2.字符串和日期之间转换,通常是需要在mapper文件的sql中使用特定的函数完成的,建议同学检查一下mapper中是否使用了转换的函数。
3.实体类中的日期类型,除非有特别的处理,否则通常都是java.util.Date类型。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星