DAO层关于Date类型数据的插入

DAO层关于Date类型数据的插入

老师,在讲解DAO层的测试时,我发现,实体类里的属性类型和数据表的数据类型不完全一样。都知道在java'实体类中的Date是java.util.Date类型的,数据库里的日期类型数据都是java.sql.Date类型的,可是在测试时我发现,

  1. 插入Date类型的时候,并没有进行数据类型转换,直接调用了DAO层接口的方法进行插入了,是说插入时候会自动将java.util.Date类型转化为java.sql.Date类型然后插入到数据库的?如果是这样的话,转换后的java.sql.Date类型是否遵循在数据库里定义的日期格式呢?

  2. 如果1假设城镇,那查询操作的话,从数据库里处取出的java.sql.Date日期数据,难道可以不用转换可以直接在代码中用java.util.Date类型来接收?这样直接打印出这个数据也是按数据表定义好的格式输出么?

  3. 为了避免JavaBean给基本数据类型自动赋默认值,本项目的基本数据类型改用它的包装类,如用Integer不用int,在插入时候,也发现没有转换而直接插入,这是否说明在数据插入和查询取出数据时,对于基本数据类型和其包装类都是自动拆箱和自动装箱的,不需要手动操作什么。

  4. http://img1.sycdn.imooc.com//climg/5d4148b600016be606640316.jpg

  5.     <update id="updateShop" parameterType="com.imooc.o2o.entity.Shop">
            update tb_shop
            <set>
                <if test="shopName != null">shop_name=#{shopName},</if>
                <if test="shopDesc != null">shop_desc=#{shopDesc},</if>
                <if test="shopAddr != null">shop_addr=#{shopAddr},</if>
                <if test="phone != null">phone=#{phone},</if>
                <if test="shopImg != null">shop_img=#{shopImg},</if>
                <if test="priority != null">priority=#{priority},</if>
                <if test="lastEditTime != null">last_edit_time=#{lastEditTime},</if>
                <if test="enableStatus != null">enable_status=#{enableStatus},</if>
                <if test="advice != null">advice=#{advice},</if>
                <if test="area != null">area_id=#{area.areaId},</if>
                <if test="shopCategory != null">shop_category_id=#{shopCategory.shopCategoryId}</if>
            </set>
            where shop_id=#{shopId}
        </update>

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好。

1、从表层来看,当数据库的数据类型为DateTime的时候,使用MyBatis,无论是插入还是查询,直接使用util包下的Date都是可以的。

2、使用原生的jdbc来操作,直接使用util.date来接收DateTime的数据是会有问题的。

3、目前我们在官方文档中并没有找到相关的解释,没有确信的官方渠道解释是否转换。我们只能合理的推断一下,如果它底层是使用了jdbc,那么一定是需要做一些转换的。具体如何转换,不好定论。

4、自动拆装箱是java包装类的特性,在调用时是会自动拆箱装箱的。不需要额外操作。

祝学习愉快~

  • 哆丶哆 提问者 #1
    那这样直接在程序用java.util.Date类型插入DataTime类型的数据字段,也会自动转为DateTime的格式么?从数据表查出来的DateTime类型装在java.util.Date的对象中,也会统一格式么?
    2019-07-31 21:05:44
  • 芝芝兰兰 回复 提问者 哆丶哆 #2
    同学可以试一下老师的代码,是没有问题的。
    2019-08-01 10:02:14
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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