坑爹了的ibatis,硬是报错,就没看出来
就是看出来什么问题,用其他的可以查询,很简单的一下问题:
spring通过dao注入,加入了default-autowire="byName"
<bean id="dao" class="com.ssm.common.CommonDaoImpl"> <property name="sqlMapClient" ref="sqlMapClient"></property> </bean>
<bean id="menuManageService" class="com.ssm.service.MenuManageServiceImpl" scope="prototype"></bean>
ibatis配置文件
<sqlMapConfig> <settings cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" useStatementNamespaces="true" /> <sqlMap resource="com/ssm/pojo/menu.xml" /> </sqlMapConfig>
menu.xml文件
<sqlMap namespace="menu"> <select id="getMax" resultClass="java.lang.String"> select max(menuId) from sys_menu </select> </sqlMap>
com.ssm.service.MenuManageServiceImpl.java
private CommonDao dao;
public String getMaxOrder() throws SQLException { String i = (String) dao.queryObject("menu.getMax", null); return i; }
public void setCommonDao(CommonDao dao) { this.dao = dao; }提示错误是这一行 :
String i = (String) dao.queryObject("menu.getMax", null);com.ssm.service.MenuManageServiceImpl.getMaxOrder(MenuManageServiceImpl.java:23) com.ssm.action.MenuManageAction.menuMax(MenuManageAction.java:22) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:597)
这是我的一个测试代码,我写其他的action没问题,数据库是正常的,如果我注解这一行,这个dao运行也是正常的,蛋痛了。。。
public Object queryObject(String sqlId, Object parameter) throws SQLException { return getSqlMapClient().queryForObject(sqlId, parameter); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
select max(menuId) from sys_menu
这种要取别名的
select max(menuId) maxId from sys_menu
我使用这个方法一样错误
不是传null的问题,我写了一个其他的,一样的测试还成功了,坑啊
传null变为传空字符应该可以
long ? 你确定?
uuid是long值吧,也有可能为null
应该是你传入值为null引起的
能不能不要传null呢
你这是myibatis写法
<select id="getMax" resultClass="java.lang.String"> ,这个mendid为类型为uuid,返回类型我用String,一样出错
看上去是类型转换问题
已经搞定了,具体什么原因没找到,但是这一句没有变
<select id="getMax" resultClass="String">
select max(menuId) from sys_menu
</select>