2010-06-23 10 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, 3.0.3 весной, PostgreSQL 8.3 (с использованием PostgreSQL-8.4-701.jdbc3.jar)

Я считаю, что все настройки шаблонный настроен правильно (я могу выполнить выделение с другой таблицы.

Я тестировал INSER вручную, и это работает просто отлично (insert into test_a (cookie) values('some stuff');)

По какой-то причине вставка не выполняет и не трассировки стека не появится :-(

Любые намеки будут самой высокой оценки: -)

+0

... может ли кто-нибудь быть добрым, чтобы создать тег для «MyBatis»? У меня просто нет репутации, чтобы это сделать ;-) – vector

+0

вне темы Я знаю, но я должен рекомендовать плагин mybatis guice, его уменьшает код плиты котла и управляет сеансом SQL для вас. Это круто!! http://code.google.com/p/mybatis/wiki/Guice – Andy

ответ

14

Вы не совершали транзакции. Попробуйте добавить «session.commit()».

+1

ВЫ СДЕЛАЛИ ДЕНЬ! СПАСИБО БОЛЬШОЕ! ... расскажите о чувстве смущения сейчас. Мне показалось, что я очень внимательно смотрю на скудные примеры в новом, скудном руководстве. Оказывается, session.commit() упоминается один раз на странице 56 из 64 :-( Как насчет этого. В любом случае, еще раз спасибо! – vector

 Смежные вопросы

  • Нет связанных вопросов^_^