2010-06-23 80 views
7

決定將我的一個項目從iBatis移到MyBatis,並遇到插入問題。MyBatis 3.0.1插入問題

XML映射:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
       "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 
<mapper namespace="bap.persistance.interfaces.ArticleMapper"> 
<insert id="insertTestA"> 
    insert into test_a (cookie) values('tomek pilot'); 
</insert> 
</mapper> 

映射器的Java文件:

public interface ArticleMapper { 
void insertTestA(); 
} 

映射實現:

String resource = "bap/persistance/MyBatis_xml/MyBatisConfig.xml"; 

.... 

... 
public void createArticle(Article article) throws IOException { 
    Reader reader = Resources.getResourceAsReader(resource); 
    SqlSessionFactory sqlSessionFactory = 
      new SqlSessionFactoryBuilder().build(reader); 
    SqlSession session = sqlSessionFactory.openSession(); 

    try{ 
    ArticleMapper mapper = session.getMapper(ArticleMapper.class); 
    mapper.insertTestA(); 
    } catch(Exception e){ 
    e.printStackTrace(); 
    } finally{ 
    session.close(); 
    } 
    return article.getId(); 
} 
... 

... line omitted for brevity. 

表中使用:

CREATE TABLE test_a 
(
    cookie text 
) 
WITH (OIDS=FALSE); 

我試圖運行mybatis 3.0.1,spring 3.0.3,postgresql 8.3(使用postgresql-8.4-701.jdbc3.jar)

我相信所有樣板設置都設置正確(我可以對另一個表執行select操作。

我手動測試inser和它的作品只是罰款(insert into test_a (cookie) values('some stuff');

出於某種原因插入不執行和不具有堆棧跟蹤顯示了:-(

任何提示將是最讚賞: - )

+0

...有人會爲'MyBatis'創建標籤嗎?我只是沒有聲望做到這一點;-) – vector 2010-06-23 22:44:13

+0

偏離主題我知道,但我不得不推薦mybatis guice插件,它減少了鍋爐板代碼併爲您管理SQL會話。它岩石! http://code.google.com/p/mybatis/wiki/Guice – Andy 2011-03-04 00:33:36

回答

14

您沒有提交您的交易。嘗試添加「session.commit()」。

+1

您節省了這一天!非常感謝! ...談論現在感到尷尬。我認爲我仔細看了一下這本新手冊中簡單的例子。事實證明session.commit()在64頁上提到過一次:-( 那該怎麼辦,無論如何,再次感謝! – vector 2010-06-23 22:34:23