2010-06-23 29 views
7

Quyết định di chuyển một trong các dự án của tôi từ iBatis sang MyBatis và gặp phải sự cố khi chèn.MyBatis 3.0.1 chèn vấn đề

mapper 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> 

mapper java file:

public interface ArticleMapper { 
void insertTestA(); 
} 

thực hiện ánh xạ:

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. 

bảng được sử dụng:

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

Tôi đang cố gắng chạy ứng dụng này với mybatis 3.0.1, mùa xuân 3.0.3, postgresql 8.3 (sử dụng postgresql-8.4-701.jdbc3.jar)

Tôi tin rằng tất cả thiết lập boilerplate được thiết lập đúng cách (tôi có thể thực hiện một lựa chọn đối với một bảng tốt.

Tôi đã thử nghiệm INSER bằng tay và nó hoạt động tốt (insert into test_a (cookie) values('some stuff');)

Đối với một số lý do chèn không thực hiện và không có vết đống xuất hiện :-(

gợi ý Bất kỳ sẽ được đánh giá cao nhất: -)

+0

... có ai đủ tốt để tạo thẻ cho 'MyBatis' không? Tôi chỉ không có danh tiếng để làm điều đó ;-) – vector

+0

tắt chủ đề Tôi biết, nhưng tôi phải đề nghị các plugin guân mybatis, nó làm giảm mã tấm nồi hơi và quản lý phiên SQL cho bạn. Nó đá !! http://code.google.com/p/mybatis/wiki/Guice – Andy

Trả lời

14

Bạn không cam kết giao dịch của mình. Thử thêm "session.commit()".

+1

BẠN ĐÃ ĐƯỢC NGÀY! CẢM ƠN BẠN RẤT NHIỀU! ... nói về cảm giác xấu hổ ngay bây giờ. Tôi nghĩ rằng tôi đã xem xét các ví dụ gầy gò trong cuốn sổ tay mới, gọn gàng khá chặt chẽ. Hóa ra session.commit() được đề cập một lần trên trang 56 của 64 :-( Làm thế nào về điều đó. – vector

Các vấn đề liên quan