日常小坑之mybatis持久化框架

之前没有接触过mybatis,做过的项目都是用的hibernate,很久没做java项目了,正在学习mybatis,顺便做一些总结。

通常在一个项目中(除了一些底层的配置外),mybatis通常需要添加一个xml的映射文件,以及接口,接口的方法用来操作数据库。具体的方法名写在接口中,具体的sql语句写在配置文件中。大家的看法是,认为mybatis比较灵活。mybatis实际应用中遇到一些问题,实际上是由于数据库不同而导致的问题。在进行插入操作的时候,mysql可以自动生成主键,而oracle需要人为的插入。

新建一个序列

新建触发器

3.插入数据

每次插入数据之前,会由触发器取出序列中的值作为表的id。mybatis也可以通过

语句来手动取出序列值配合其它字段插入到对应的表中。mysql 可以直接写oracle是不行的,必须要用dual,dual作伪表。

原本mybatis的插入映射操作是支持id的自动生成,

不过这个要分数据库,对oracle无效,对mysql是有效的。而在对应的hibernate中的配置方式是有些不一样的

hibernate会自动从序列中取出值生成主键。应用中考虑到一个问题,对于拉单而言,接口返回的订单封装成一个一个的对象放到list中取,可以通过for循环将list里面的对象取出,一个一个的插入到数据库,这样肯定是比较慢的,不如批量插入,而且插入一次提交一次的效率也不高,不过,如果插入成功一次提交的话,在出错回滚的时候可以回滚到邻近事务提交的地方,不至于将所有插入数据库的单子都回滚回去。mybatis批量插入过多貌似是不可以的(有待研究)。对于批量操作,mysql支持

oracle不支持

自己写了个循环插入,试了半天还不行,心累啊(在尝试中)

对于外键的关联,hibernate配置one-to-many one-to-one many-to-many即可,当然也需要持久化类的配置,但查询的时候,可以把外键关联的对象都抽出来。

mybatis真的很麻烦,需要用association关联对象的各个属性,还需要在sql中使用表与表的连接来赋值,心累。

继续学习….

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180608G08S2100?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券