坑爹了的ibatis,硬是报错,就没看出来

发布于 2021-11-20 13:01:49 字数 2569 浏览 809 评论 12

就是看出来什么问题,用其他的可以查询,很简单的一下问题:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

冷清清 2021-11-25 06:17:50

select max(menuId) from sys_menu

这种要取别名的

select max(menuId) maxId from sys_menu

小瓶盖 2021-11-25 06:17:49
public Object querySql(String sql) throws SQLException{
    return getSqlMapClient().queryForObject(sql);
}

我使用这个方法一样错误

别再吹冷风 2021-11-25 06:17:42

不是传null的问题,我写了一个其他的,一样的测试还成功了,坑啊

像你 2021-11-25 06:17:03

传null变为传空字符应该可以

倚栏听风 2021-11-25 06:16:59

long ? 你确定?

拍不死你 2021-11-25 06:15:14

uuid是long值吧,也有可能为null

陌上芳菲 2021-11-25 06:04:39

应该是你传入值为null引起的

策马西风 2021-11-25 03:12:02

能不能不要传null呢

奢华的一滴泪 2021-11-25 03:01:07

你这是myibatis写法

梦中楼上月下 2021-11-25 02:49:22

<select id="getMax" resultClass="java.lang.String"> ,这个mendid为类型为uuid,返回类型我用String,一样出错

檐上三寸雪 2021-11-24 11:29:07

看上去是类型转换问题

平生欢 2021-11-24 04:39:55

已经搞定了,具体什么原因没找到,但是这一句没有变

<select id="getMax" resultClass="String">
select max(menuId) from sys_menu
</select>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文