0 0

Ibatis的1对多把我搞疯了5

先看错误

Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
--- The error occurred in com/User.xml.  
--- The error occurred while applying a result map.  
--- Check the handr.  
--- Check the result mapping for the 'fingers' property.  
--- Cause: java.lang.NullPointerException; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/User.xml.  
--- The error occurred while applying a result map.  
--- Check the handr.  
--- Check the result mapping for the 'fingers' property.


发代码前先说一下,这是测试用代码,所以结构凑合吧
package com;

import java.util.List;

public class Hand {
	private int handId;
	private List fingers;
	public int getHandId() {
		return handId;
	}
	public void setHandId(int handId) {
		this.handId = handId;
	}
	public List getFingers() {
		return fingers;
	}
	public void setFingers(List fingers) {
		this.fingers = fingers;
	}
}

package com;

public class Finger {
	private int fingerId;

	public int getFingerId() {
		return fingerId;
	}

	public void setFingerId(int fingerId) {
		this.fingerId = fingerId;
	}
	
}

package com;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

public class Dao extends SqlMapClientDaoSupport {
	public Hand get(int i){
		return (Hand) this.getSqlMapClientTemplate().queryForObject("getHand", i);
	}
	public static void main(String[] args){
		ApplicationContext app = new FileSystemXmlApplicationContext("src/com/ApplicationContext.xml");
		Dao dao = (Dao)app.getBean("dao");
		Hand h = dao.get(1);
		System.out.println(h);
	}
}

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "http://ibatis.apache.org/dtd/sql-map-2.dtd" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap>
	<resultMap class="com.Hand" id="handr">
		<result property="handId" column="h_id"/>
		<result property="fingers" select="getFingers" column="h_id"/>
	</resultMap>
	<resultMap class="com.Finger" id="fingerr">
		<result property="fingerId" column="f_id"/>
	</resultMap>
	<select id="getHand" resultMap="handr" parameterClass="int">
		select * from hand where h_id = #value#
	</select>	
	<select id="getFingers" resultMap="fingerr" parameterClass="int">
		select * from finger where h_id = #value#
	</select>	
</sqlMap>


表hand 里就一个h_id
finger h_id和f_id

简单的不能再简单了
但是我搞不定 晕死了
2009年1月05日 18:44
目前还没有答案

相关推荐

    ibatis 一对多 多对多完整映射

    本文将深入探讨如何在iBATIS中实现一对多和多对多的关系映射,并提供相关的源码分析和工具使用技巧。 **一对多关系映射** 在数据库设计中,一对多关系是指一个父记录可以与多个子记录关联,例如,一个用户可以有多...

    ibatis多对多关系(详细)

    iBatis多对多关系详解 iBatis是一种流行的持久层框架,用于简化Java应用程序和关系数据库之间的交互。在本文档中,我们将详细介绍iBatis在处理多对多关系时的配置和实现。 多对多关系 多对多关系是一种常见的关系...

    ibatis 一对多

    本文将深入探讨`iBatis` 中的一对多映射关系,以及如何通过源码理解和使用这个特性。 一对多映射是数据库关系模型中的常见概念,指的是一个父表(如部门表)可以对应多个子表(如员工表),每个部门可以有多个员工...

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis配置多表关联(一对一、一对多、多对多

    ibatis 一对多关系映射

    首先,我们需要在映射文件中定义主表(一对一端)和从表(多对一端)的映射。假设我们有一个`User`类对应`users`表,一个`Order`类对应`orders`表,其中`orders`表有一个`user_id`字段作为外键关联到`users`表。 在...

    ibatis 多对多

    在Ibatis中处理多对多关系时,我们需要使用关联映射来定义这种关系。 1. **配置关联映射** 在Ibatis中,多对多关系通常通过`&lt;collection&gt;`标签来实现,它定义在一个实体类的映射文件中。这个标签通常包含`select`...

    ibatis一对一、多对一示例

    利用ibatis实现一对一、多对一的示例代码。每种关系用两种方式实现,具体的讲解可看我的博客http://blog.csdn.net/duwenchao1986/article/details/8565386

    ibatis多表查询

    在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...

    Ibatis一对一映射提示

    本篇将深入讲解iBATIS一对一映射的概念、配置及应用,帮助你更好地理解和运用这个功能。 一对一映射在数据库设计中是指两个表之间存在一对一的关系,例如,一个员工可能只有一个部门,一个部门也只对应一个员工。在...

    ibatis实战之一对多关联(源代码)

    1. **一对多关联映射原理** 一对多关联映射主要依赖于`&lt;resultMap&gt;`、`&lt;collection&gt;`和`&lt;association&gt;`元素。`&lt;resultMap&gt;`定义了对象和数据库记录之间的映射规则,`&lt;collection&gt;`用于表示多的一方,而`...

    ibatis总结 ibatis ibatis ibatis ibatis

    1. Ibatis SQL映射: Ibatis的主要特点是通过XML或注解定义SQL映射文件,将SQL语句与Java对象绑定。例如,`&lt;select&gt;`标签用于定义查询语句,`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`分别对应增删改操作。在SQL映射文件...

    ibatis 完美例子 一对多 批处理 事务 和 spring struts2集成

    本文将深入探讨如何利用Ibatis实现一对多关系、批处理、事务管理和与Spring及Struts2的集成。 首先,让我们来看一下“一对多”关系。在数据库设计中,一对多关系很常见,比如一个用户可以有多个订单。在Ibatis中,...

    ibatis demo,ibatis例子,ibatis示例

    1. **配置文件**:Ibatis的配置文件(mybatis-config.xml)是整个框架的入口,它包含了数据源、事务管理器、SqlSessionFactory等重要设置。数据源定义了连接数据库的信息,如驱动、URL、用户名和密码;...

    struts1+ibatis框架整合

    Struts1和iBatis是两个非常经典的Java Web开发框架,它们在早期的Web应用程序中广泛应用。Struts1主要用于控制应用程序的流程,而iBatis则是一个轻量级的持久层框架,它提供了灵活的SQL映射机制,使得数据库操作与...

    Ibatis多表查询

    为了演示Ibatis的多表查询功能,本文档采用了一个简单的例子:一个图书 (`book`) 表和一个用户 (`user`) 表,其中图书表与用户表之间存在一对多的关系。这意味着每本书可以有多个作者。 **图书表 (`book`) 结构:** ...

    ibatis的的增删改查和一对一、一对多查询

    本篇文章将详细探讨iBatis在增删改查(CRUD)操作以及一对一和一对多关系映射中的应用。 首先,让我们了解一下iBatis的CRUD操作: 1. **创建(Create)**:在iBatis中,创建数据通常通过`&lt;insert&gt;`标签实现。你需要...

    Mybatis/ibatiS多表映射 一对一 一对多 extjs前台取值 详细讲解

    总结来说,这个话题覆盖了Mybatis/iBatis中的多表映射,通过XML配置文件处理一对一和一对多关系,以及如何在ExtJS前端通过Model和Grid获取并展示这些数据。了解这些知识对于开发涉及多表交互的应用至关重要,能够...

    Spring高版本对ibatis的支持

    最近想在最新的Spring5.0中集成ibatis(不是mybatis),发现已经不在支持SqlmapClientTemplate和SqlmapClientFactoryBean,于是搞了这个工具jar来进行支持如下配置 ...

Global site tag (gtag.js) - Google Analytics