读书人

MyBatis错误Parameter #039;title#039; not fo

发布时间: 2013-03-14 10:33:15 作者: rapoo

MyBatis异常Parameter 'title' not found
Cause: org.apache.ibatis.binding.BindingException: Parameter 'title' not found. Available parameters are [1, 0, param1, param2]at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:137)at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:46)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)at $Proxy0.insert2(Unknown Source)at demo.Demo1.main(Demo1.java:75)Caused by: org.apache.ibatis.binding.BindingException: Parameter 'title' not found. Available parameters are [1, 0, param1, param2]at org.apache.ibatis.binding.MapperMethod$ParamMap.get(MapperMethod.java:160)at org.apache.ibatis.reflection.wrapper.MapWrapper.get(MapWrapper.java:41)at org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:113)at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:73)at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:77)at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:58)at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:71)at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:44)at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:100)at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:148)... 5 more

?

?

?

其实,我在刚开始做第一个demo的时候没有发现,做的是查询。可是,在我做插入和更新的时候就有问题了。弄了好久也米有弄明白,最终,在j8中看到一个人问问题,加了qq,请教了,才可以呢。言归正传,开始解决问题:

先把配置文件和Mapper类贴出来:

Mapper.xml文件:

<insert id="insert1" parameterType="model.Blog" useGeneratedKeys="true" keyProperty="id">insert into Blog (title, content) values (#{title}, #{content})</insert>

?Mapper类:

int insert2(String title, String content);

?

?

这么一看,参数不错啊。对,就是这个让我一直没有想到解决的办法。最后,那位仁兄一指点,如果醍醐灌顶般。我的parameterType="model.Blog",而我的方法中的参数却是 insert2(String title, String content);所以就出现了这个问题。解决的办法就是在Mapper中这样定义:int insert1(Blog blog);可以了。

?

?

另外,在做insert,update,delete操作的时候必须手动提交事务:session.commit();因为这些时候会开启事务,而Mybatis默认是不自动提交的,所以,得手动提交。在做查询的时候,数据库是不会开启事务的,所以不需要提交

?

?

1 楼 抛出异常的爱 昨天 List<User> queryUserByType(
@Param(value = "userType")String type,
@Param(value = "startRow")int startRow,
@Param(value = "endRow")int endRow); 2 楼 商人shang 昨天 抛出异常的爱 写道List<User> queryUserByType(
@Param(value = "userType")String type,
@Param(value = "startRow")int startRow,
@Param(value = "endRow")int endRow);
什么意思呢?

读书人网 >编程

热点推荐