也許我錯過了一些明顯的東西,但我無法獲得一個簡單的映射插入語句執行成功。Mybatis 3.0.5多輸入插入/更新語句映射
使用下面的接口
public interface CustomItemMapper
{
Integer insert(CustomItem item, @Param("extra") String someparam);
}
和下面的XML映射
<insert id="insert" useGeneratedKeys="false" parameterType="map" keyProperty="id">
insert into CustomItem (id, column2, column3, column4, column5, column6)
values (#{id}, #{field2}, #{field3}, #{field4}, #{field5}, #{extra})
</insert>
和驗證碼
SqlSessionFactory sqlSessionFactory = (SqlSessionFactory) servletContext.getAttribute("SqlSessionFactory");
SqlSession session = sqlSessionFactory.openSession();
try
{
CustomItemMapper mapper = session.getMapper(CustomItemMapper.class);
mapper.update(item);
session.commit();
}
finally
{
session.close();
}
我得到以下調試輸出:
Checked out connection 368716606 from pool.
ooo Connection Opened
==> Executing: insert into CustomItem (id, column2, column3, column4, column5, column6) values (?, ?, ?, ?, ?, ?)
==> Parameters: null, null, null, null, null, actual_value_of_extra(String)
xxx Connection Closed
Returned connection 368716606 to pool.
後跟SQL異常(無法在id
列中輸入null)。
所以正確傳入的唯一值是額外提供的字符串。我已驗證字段名稱是否正確,並且此時對象不爲空,且字段已正確填充。
我也嘗試使用parameterType="CustomItem"
而不是parameterType="map"
,但結果並沒有改變。
如果有人能讓我知道我在這裏失蹤,我將不勝感激。
在此先感謝。 PS:我也遇到了與插入語句相同的問題。
非常感謝!我已經看過手冊中的這一部分,並想到了界面的變化。我無法想到的是第二部分(即xml中'item'的表示)。 – alokoko
np,它是OGNL。在用戶指南中搜索動態SQL以獲取更多信息。 – Andy