0 0

iBatis报错3

异常如下:
org.xml.sax.SAXParseException: The content of element type "resultMap" must match "(result*,discriminator?)".

源码如下:
<sqlMap>

	<typeAlias alias="User" type="jp.co.grids.mda.entity.user.User"/>
	<typeAlias alias="Department" type="jp.co.grids.mda.entity.user.Department"/>
	
	<resultMap id="DepartmentResult" class="Department">
		<result property="id" column="ID" />
		<result property="depName" column="DEP_NAME" />
		<result property="users" column="ID" select="getUsers" />   
	</resultMap>
	
	
	<select id="getUsers" resultClass="User">   
        select * from users where id=#value#   
    </select> 
	
    
    <select id="Department.select" parameterClass="java.lang.Long" resultMap="DepartmentResult">
        select id, dep_name
        from department 
    </select>
</sqlMap>


框架是Spring2.5 + struts2 + ibatis2.3。 百思不得其解,语法应该没有错啊。
问题补充:
yourgame  你贴的代码里并没有resultMap使用。
2009年3月26日 15:15

1个答案 按时间排序 按投票排序

0 0

采纳的答案

我贴一个给你参考 源代码工程可以下载
地址 [url]http://yourgame.iteye.com/blog/252853 [/url]

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap      
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"      
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="Category">

	<typeAlias alias="subject" type="com.lhq.prj.bms.po.Subject" />
	<typeAlias alias="category" type="com.lhq.prj.bms.po.Category" />
	<typeAlias alias="page" type="com.lhq.prj.bms.core.Page" />

	<parameterMap class="category" id="pm_category_without_id">
		<parameter property="categoryName" javaType="string" jdbcType="VARCHAR" />
		<parameter property="subjectId" javaType="integer" jdbcType="NUMBER" />
		<parameter property="subjectName" javaType="string" jdbcType="VARCHAR" />
		<parameter property="remark" javaType="string" jdbcType="VARCHAR" />
	</parameterMap>
	<sql id="byCategoryIdCondition">
		<![CDATA[
		   categoryId = #categoryId:NUMBER#
	    ]]>
	</sql>

	<insert id="save" parameterMap="pm_category_without_id">
		<![CDATA[
			INSERT INTO t_category 
						(categoryName,subjectId,subjectName,remark) 
				 VALUES (?,?,?,?)
		]]>
		<selectKey resultClass="int">
			<![CDATA[
				SELECT @@IDENTITY AS ID
			]]>
		</selectKey>
	</insert>

	<delete id="deleteById" parameterClass="integer">
		<![CDATA[
			delete t_category
		]]>
		<dynamic prepend="WHERE">
			<include refid="byCategoryIdCondition" />
		</dynamic>
	</delete>

	<select id="findAll" resultClass="category">
		<![CDATA[
			SELECT * FROM t_category
		]]>
	</select>

	<update id="update" parameterClass="category">
		<![CDATA[
			UPDATE t_category
		]]>
		<dynamic prepend="SET">
			<isNotNull property="categoryName" prepend=",">
				<![CDATA[
					categoryName = #categoryName:VARCHAR#
				]]>
			</isNotNull>
			<isNotNull property="subjectId" prepend=",">
				<![CDATA[
					subjectId = #subjectId:NUMBER#
				]]>
			</isNotNull>
			<isNotNull property="subjectName" prepend=",">
				<![CDATA[
					subjectName = #subjectName:VARCHAR#
				]]>
			</isNotNull>
			<isNotNull property="remark" prepend=",">
				<![CDATA[
					remark = #remark:VARCHAR#
				]]>
			</isNotNull>
		</dynamic>
		<dynamic prepend="WHERE">
			<include refid="byCategoryIdCondition" />
		</dynamic>
	</update>

	<sql id="findCategoryByPageCondition">
		<isNotEmpty property="conditions">
			<iterate property="conditions" open="(" close=")" conjunction="OR">
				<![CDATA[
					upper(categoryName) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%'
					OR upper(subjectName) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%'
				    OR upper(remark) LIKE '%' + upper(#conditions[]:VARCHAR#) + '%' 
			    ]]>
			</iterate>
		</isNotEmpty>
	</sql>

	<select id="findByPage" parameterClass="page" resultClass="category">
		<![CDATA[
			SELECT TOP $limit$ * FROM t_category 
					WHERE (categoryId >= (SELECT MAX(categoryId) FROM (SELECT TOP $start$ categoryId FROM t_category 
		]]>
		<dynamic prepend="WHERE">
			<include refid="findCategoryByPageCondition" />
		</dynamic>
		<![CDATA[
			ORDER BY categoryId ) AS T)) 
		]]>
		<dynamic prepend="AND">
			<include refid="findCategoryByPageCondition" />
		</dynamic>
		<![CDATA[
			ORDER BY categoryId
		]]>
	</select>

	<select id="findByCount" parameterClass="page" resultClass="int">
		<![CDATA[
			SELECT COUNT(*) FROM t_category 
		]]>
		<dynamic prepend="WHERE">
			<include refid="findCategoryByPageCondition" />
		</dynamic>
	</select>

	<select id="findCategoryBySubject" parameterClass="subject" resultClass="category">
		<![CDATA[
			SELECT * FROM t_category 
		]]>
		<dynamic prepend="WHERE">
			<isNotNull property="subjectId" prepend="OR">
				<![CDATA[
					subjectId = #subjectId:NUMBER#
				]]>
			</isNotNull>
			<isNotNull property="subjectName" prepend="OR">
				<![CDATA[
					subjectName like '%' +  #subjectName:VARCHAR# + '%'
				]]>
			</isNotNull>
		</dynamic>
	</select>
</sqlMap>

2009年3月26日 15:23

相关推荐

    ibatis的错误总结

    在深入探讨ibatis框架中可能遇到的错误时,我们首先需要理解ibatis(现被称为MyBatis)的基本概念。ibatis是一种优秀的持久层框架,它消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。ibatis可以使用...

    基于Spring+Ibatis的安全线程实现

    在IT行业中,尤其是在Java开发领域,Spring框架与iBatis持久层框架的组合是常见的应用架构。本篇文章将深入探讨如何在这样的环境下实现安全的线程管理,确保系统的高效、稳定运行。 首先,Spring框架提供了丰富的...

    iBATIS操作Oracle CLOB数据

    综上所述,通过iBATIS操作Oracle的CLOB数据,需要对iBATIS的映射文件、类型处理器以及Oracle的CLOB特性有深入理解。在实际开发中,合理配置和使用这些机制,能够有效地管理大量文本数据,同时保持代码的简洁性和可...

    ibatis3批量插入

    通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...

    ibatis自动生成工具ibator,改进版

    开源ibator什么xml和pojo的时候,经常会带一些讨厌的注释还有一些没用的ibatorgenerator等的,我改了它的源代码,弄了个干净的ibator

    IBatis.NET 1.9.2 1.6.2 应用于.NET4.0,解决Ambiguous match found

    结果发现总是报错Ambiguous match found 经过参考资料,重新整理了ibatis的资料,原因如下: iBatis中使用了Castle.DynamicProxy 1.5 而Castle.DynamicProxy 1.5版本是旧版本,支持到.Net 2.0, 目前最新的版本为...

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    当运行测试用例(如JUnit)时,报错信息显示`org.apache.ibatis.exceptions.PersistenceException`,其根本原因可能是一个`ReflectionException`,具体为尝试实例化类`com.fendo.entity.Person`时遇到了无效的类型或...

    springmvc+velocity+hession+ibatis

    - 如果有缺失的包,需要根据报错信息搜索并添加对应的依赖 - 编译和运行项目,调试和解决可能出现的问题 这个项目是一个很好的学习和研究平台,因为它集成了多种常见的Java Web开发技术,可以帮助你深入了解这些...

    解决mybatis-plus3.1.1版本使用lambda表达式查询报错的方法

    总的来说,解决MyBatis-Plus 3.1.1版本使用Lambda表达式查询报错的问题,主要从以下几个方面入手: 1. 检查并确保实体类中的字段有正确的`@TableField`注解,指定了数据库中的对应列名。 2. 在配置中启用Lambda支持...

    IBatis框架

    - **错误定位**:MyBatis 报错时会提供 SQL 映射文件和行号,便于定位问题。 ### 8. 性能优化 - **批处理**:使用 `SqlSession` 的 batch() 方法,批量执行相似的插入或更新操作。 - **缓存**:MyBatis 支持一级...

    springMVC_ibatis_redis_cxf_restful框架整合代码实例

    1.简单的ibatis多表级联 2.基于cxf的restful接口开发,包括文件上传(文档,图片等)接口 3.redis缓存服务,通过spring的aop来控制 4.file表太大,我给清空了,测试的是注意报错 5.本人测试通过,有问题可交流

    ibatis结合oracle批量插入三种方法的测评

    iBatis结合Oracle批量插入三种方法的测评 iBatis是一种流行的持久层框架,提供了对数据库的访问和操作功能。Oracle是目前最流行的关系数据库管理系统之一。今天,我们将讨论iBatis结合Oracle批量插入三种方法的测评...

    struts+spring+ibatis+hibernate项目所需jar包全

    提供ssi ssh项目所需的所有jar包,只...你下载的web项目是不是缺包报错呢?下载--解压--放到web的lib下--发布--启动tomcat即可,帮到你点个赞,缺数据库驱动的,请下载我的资源'mysql+oracle+sqlserver三大数据库驱动包'

    搭建ssi环境温度

    4. **启动应用**:完成上述步骤后,启动应用,如果没有报错,说明Struts2环境已搭建成功。 5. **Action的实现**:Struts2的Action有两种实现方式,一是直接实现`Action`接口,二是继承`ActionSupport`类。`...

    springMVC war

    springMVC ibatis war mysql

    Spring+Struts+ibatis 框架源码(里面带有框架所需要的架包)

    由于我初学SSI框架的时候在网上搜了很多资料,要么下载不下来,要么把框架搭建好了运行的时候总是报错,找不到个别的包,因此我把这个搭建好的SSI框架源码奉献给大家,希望爱好软件行业的你与我一同前进,里面的配置...

    ibatics 官方网站正确实例

    ②删除操作时会报错,原因如下: com.mydomain.data.SimpleExample.java文件中的删除方法如下: public static void deleteAccount (int id) throws SQLException { sqlMapper.delete("deleteAccount", id); ...

Global site tag (gtag.js) - Google Analytics