entity 日期成员变量使用String与Date的问题

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回答

同学你好~

1.之前需要转换,是因为我们使用的是原生的JDBC技术。但是现在使用MyBatis之后,框架会自动帮我们完成日期对象的转换,所以不需要再进行手动转换了。

2.字符串和日期之间转换,通常是需要在mapper文件的sql中使用特定的函数完成的,建议同学检查一下mapper中是否使用了转换的函数。

3.实体类中的日期类型,除非有特别的处理,否则通常都是java.util.Date类型。

祝学习愉快~

  • weixin_慕仙7241916 提问者 #1

    现在学习的是使用Spring jdbc,并且没有使用到任何mapper文件


    DB中的日期是Date,我从DB取出来是用String类去接的,然后不做任何转换,重新插回去不报错

    2022-09-14 10:15:34
  • 同学你好,经过测试与源码的对比,可以推测SpringJBDC中对时间格式可以进行简单的自动转换。

    当使用“yyyy-MM-dd”或“yyyy/MM/dd”时是可以自动转换的。

    在实际开发中,并不会将字符串与时间类型进行混用,所以同学了解一下即可。

    祝学习愉快~

    2022-09-14 11:39:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师