ibatis一对多映射读取内容为空

问题描述

ibatis一对多映射读取内容为空

最近在学ibatis,在写一对多的时候遇到了一些问题,有两张表为ABC(String id,String status),roles(String id,Integer role),有着一对多的关系。
ABC的一个id对应着多个role,两者之间用id关联。但是我查role的时候总是没有值。

两张表的bean文件我不写了。另外有一个bean为

 public class ABCRoles{
 private String id;
 private String status;
private List roles;
//省略get和set
 }

xml文件内容为

 <?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="relation" >

    <typeAlias alias="abc" type="XXX.abc" />

    <resultMap id="abcResultMap" class="abc" >
    <result column="id" property="id"  />
    <result column="status" property="status" />
    <result column="id" property="roles" select="relation.getRoles"/>
  </resultMap>

    <select id="getXXX"  resultMap="abcResultMap">
        <![CDATA[
        select id,status from ABC
        ]]>
    </select>

    <select id="getRoles" resultClass="java.lang.Integer">
        <![CDATA[
                select role from roles
            ]]>
    </select>

</sqlMap>

主函数就主要是调用了

 List list = getSqlMapClientTemplate().queryForList("relation.getXXX");

但是在显示的时候,发现 ABCRoles中的roles没有值,可是明明就应该有值,我想不通,求大神帮忙!!!

解决方案

ibatis一对多映射

解决方案二:

你的getRoles这个SQL没有参数,而关联查询时是以id为查询条件的。
你的resultMap配置没有问题,建议修改下getRoles的参数再试试。祝好!

时间: 2024-10-02 17:42:38

ibatis一对多映射读取内容为空的相关文章

网页搜索框内容为空的5种处理方式

终于能出来透口气,写点东西了.前段太忙,也很郁闷,现在调整过来点了. 我的设计原则就是在满足需求的前提下,尽可能的简化,简化,再简化.有一次跟一个朋友聊天,他问我作为交互设计师,你的三个原则是什么?我回答:1.以用户为中心去设计,让事情变得简单化:2. 平衡商业需求与用户体验之间的权重:3. 有下游意识,但不干涉下游二次创新. "用户体验是门妥协的艺术",一边是复杂的需求输入,另一边要做到简单的产品输出,这是件既麻烦又头疼的事.大框架想好了,抠细节的时候,问题就一个接一个的来了.如果内

js加载读取内容及显示与隐藏div示例

 这篇文章主要介绍了js加载读取内容及显示与隐藏div的方法,需要的朋友可以参考下  代码如下: <head>  <script>  function check(){    var num = document.getElementById("choose").value;  alert(num);  if(num=="4"){  document.getElementById("show").style.display

Dom4j解析xml内容为空

问题描述 Dom4j解析xml内容为空 Document doc1 = saxR.read(xmlfile);Element rootElt1 = doc1.getRootElement();Element name = rootElt1.element(""Name""); String text=name.getText(); NameBean nameBean = new NameBean();nameBean.setName(name.getStringVa

jsp-从数据库读取内容,将内容显示在JSP页面,可是JSP页面什么也不显示

问题描述 从数据库读取内容,将内容显示在JSP页面,可是JSP页面什么也不显示 先用一个Html写出前台页面,然后点击提交后跳转到一个Servlet页面,该页面用于向数据库中添加前台用户输入的信息,然后重定向到一个查看信息的Servlet该Servlet用于将信息交给一个JavaBean最后用一个JSP显示信息,可是我在myeclipse中执行后什么也不显示,Access数据库里也没有内容,该怎么办啊?? 解决方案 第一步,测试你后台的第一个Servlet页面接收到了前台提交的数据. 解决方案二

InputStream 的read(byte[] d)方法读取内容出现重复读取,这是为什么?

问题描述 InputStream的read(byte[]d)方法读取内容出现重复读取,这是为什么? 解决方案 解决方案二:有没有用到skip()方法?如果用到了,实际上是skip的问题解决方案三:你是怎么读的,请贴出代码!解决方案四:谢谢各位帮忙,已经解决了解决方案五:这是代码:StringBufferbuffer=newStringBuffer();byte[]b=newbyte[2048];InputStreamin=newInputStream(filename);while(in.rea

织梦整合百度编辑器保存栏目内容为空了

问题描述 织梦整合百度编辑器保存栏目内容为空了 织梦整合了下百度编辑器,编辑器是好了,倒是保存栏目内容后却是空的,不知道哪位遇到过,谢谢!

急急急!!!ibatis一对多映射查询操作 千回百转仍无法定位异常

问题描述 急急急!!!ibatis一对多映射查询操作 千回百转仍无法定位异常 直接上代码吧先看基础类public class MetaInfo extends BaseObject{ private String id ; //索引 private String ename ; //字段名称 private String type ; //字段类型 private String length ; //字段长度 private String cname ; //中文名称 private Strin

为何用c#中的repeater控件邦定数据调试后,在浏览页面没有显示内容是空的?

问题描述 为何用c#中的repeater控件邦定数据调试后,在浏览页面没有显示内容是空的?IDAL.ICustomercust=newSQLServerDAL.SQLCustomer();IList<Model.Customer>cust1=cust.GetCustomers();this.Repeater1.DataSource=cust1;this.Repeater1.DataBind(); 解决方案 解决方案二:该回复于2008-05-27 13:20:49被版主删除解决方案三:Repe

java中 如何判定文本框(JTextFeld)的内容为空?

问题描述 有谁知道文本框的内容是否为空的判定函数或实现方法? 解决方案 解决方案二:JTextFieldtf=newJTextField();Stringstr=tf.getText();if(null==str||"".equals("")){System.out.println("JTextField的内容为空!");}else{System.out.println("JTextField的内容不为空!");} 解决方案三