插入和提交在Mybatis中做了什么?

时间:2013-01-21 14:08:21

标签: insert mybatis overhead

我对插入操作的开销进行了测试以及提交operation.code片段如下:

long t2 = System.currentTimeMillis();
session.insert("mybatis_test.BlogMapper.insert", new BlogMapper(4, "shuaige"));

long t3 = System.currentTimeMillis();
session.insert("mybatis_test.BlogMapper.insert", new BlogMapper(6, "shuaigege"));
long t4 = System.currentTimeMillis();
session.insert("mybatis_test.BlogMapper.insert", new BlogMapper(7, "shuaigegege"));
long t5 = System.currentTimeMillis();
session.commit();
long t6 = System.currentTimeMillis();

System.out片段如下:

System.out.println(t3-t2);
System.out.println(t4-t3);
System.out.println(t5-t4);
System.out.println(t6-t5);

,输出为:

869

1

1

205

正如我们在这里看到的那样,第一个'insert'操作和提交操作占用了大部分开销。但是第一个插入是做什么的,这需要花费很多开销?

2 个答案:

答案 0 :(得分:0)

第一个插入打开de connection。然后在会话期间重复使用。

答案 1 :(得分:0)

从技术上讲,“插入”将执行映射器中的任何操作。 提交方法将sql提交到数据库,没有它实际上没有插入,它可能会说(例如在eclipse中)一切顺利,但在数据库上,除非它被提交,否则不会有任何东西。希望有助于澄清