韩顺平老师购物车部分源码心得(批量提交部分,订单表)

这是我的第一篇博客,写的不会很好。

由于韩顺平老师讲的课是2011年的,所以用到的技术有点久远,而且用的数据库也不是MySql,之前玩过oracle,感觉玩不起,所以只好用简单的mysql了。我也是在其他论坛上看到一篇博客才能实现韩老师的功能。

首先,我数据库这方面目前学的不怎么好(以后一定会好的额),所以看他视频说要用到批量提交等一些没听过的名词时,感觉头都大了,不过我当时总结了几个问题①什么是事务隔离级别?②MySql也能像他那样批量提交吗?

③视频中的序列自增有什么用?对于上述问题,我上网查了资料,①事务隔离级别,这里我只用到了序列化Serializable(好像java里面也有序列化,好像是在流那方面的吧),所以我只了解到这方面,据我了解,这个序列化,类似于java中的Synchornize锁机制(没错吧尴尬),因为他要批量提交,意思就是说要两个表同时提交才能成功的写入数据库,但是我后来发现,如果前面的提交不成功,虽然写不进数据库,但是当后面有一次提交成功后,这里我要提一下,我的主键是设置自增的,恩,刚才说到,当后面又一次提交成功后,会发现,主键增长的是上一个数据加上后面的操作次数,包括错误的,意思就是说,数据库成功插入两行数据,但是第一个数据主键是1,第二个主键是8这样子,而8就是1加上错误次数6加上成功次数1,不知道这是不是Serializable的固有属性。这些都是后话,这过程中还是遇到一些有价值的问题的。②Java也提供mysql批量提交的方法,而且跟ORACLE大致差不多。③而且后面我发现oracle的自增序列,跟我们在Mysql直接设置自增(alter table orders set <oldname> <newname> auto_increment )没什么大的区别。然后我解决完这个问题,又遇到一个新的问题,就是拿到刚刚插入的orderid,由于视频中是通过序列来拿到的,所以这个方法我暂时保留。我又在网上找了其他方法,终于让我找到了Connection.prepareStatement().getGeneratedKeys(),这个方法可以拿到刚刚设置的所以属性值,当然拿到主键就不在话下了,但是直接按照它上面来写就是(Connection)ct.prepareStatement(sql).getGeneratedKeys();这样写,发现会报一个错误!******!总之就是说什么声明没有请求之类的,然后我不断调错(中间也出了一点低级的错误,新手没办法啊),终于在ps.getGeneratedKey();这句话出错,我上网找了一下,发现原来说什么mysql5.17新改版后,用这个方法就只能用Statement(这个我哪肯啊,会非法注入的,大家都明白的),资料上那人是说什么换个低版本的,于是乎,我有换了mysql 5.126的jar包,行了不报错了,但是报了另一个错,什么错误,我忘记了,反正就是将prepareStatement(sql)变成prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);才能使用,恩,这样我就可以成功的批量提交了,今天就这样吧,好多蚊子啊,擦,我的一个下午就是被这个批量提交霸占了,我会努力的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值