也许我错过了一些明显的东西,但我无法获得一个简单的映射插入语句执行成功。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