现在有两个表
student(
  id 学生ID
  provinceId  省份ID
  name 学生名字
)province(
  id 省份ID
  name 省份名字
)select student.name,province.name from student,province where student.id='1' and student.provinceId=province.id 我想在student 的 SQLMAP配置文件里配置使用实现这样功能的SQL语句。我的疑惑在那个 resultMap 怎么写?? 返回的数据怎么接收呢??  在该配置文件中,还得引入什么?? 请使用示例代码说明一下。谢谢!

解决方案 »

  1.   

    <resultMap id="testMap" class="test.stuDomain">

    <result property="stuname" column="stuname"/>
    <result property="proname " column="proname "/></resultMap>
    <select id="queryDocById"  resultMap="testMap">
      sql:select student.name stuname,province.name proname from student,province where student.id='1' and student.provinceId=province.id 
      </select>
      stuDomain.javaprivate String proname ;private String stuname;
    get,set...
      

  2.   

    我说,说到这份上还用举例?
    你先学习ibatis吧
      

  3.   

    --------------
    你这样的解决办法是得新建一个类了,能否不新建类,使用纯粹的java.util.Map 来接收呢???
      

  4.   

    都提示你可以用map接收了,你搜下不就知道了<resultMap id="abcdefg" class="java.util.HashMap"> 
    <result property="sname" column="student.name"/> 
    <result property="pname" column="province.name "/>

    </resultMap> 
    使用queryForMap方法
      

  5.   

    用这个class="test.stuDomain"来接收啊,不明白?
      

  6.   

    ------------------------------------------------------------
    你好,我这样处理,但是结果没有查到东西。没有返回数据:  <resultMap class="java.util.HashMap" id="queryForShowListByKeywordResult">
        <result column="salempx.id" property="id" jdbcType="INTEGER" />
        <result column="salempx.userId" property="userId" jdbcType="INTEGER" />
        <result column="salempx.tableNameId" property="tableNameId" jdbcType="INTEGER" />
        <result column="salempx.isEnterprise" property="isEnterprise" jdbcType="CHAR" />
        <result column="province.named" property="provinceName" jdbcType="VARCHAR" />
        <result column="city.named" property="cityName" jdbcType="VARCHAR" />
        <result column="college.named" property="collegeName" jdbcType="VARCHAR" />
        <result column="salempx.title" property="title" jdbcType="VARCHAR" />
        <result column="messagestatus.state" property="messageStatusState" jdbcType="VARCHAR" />
        <result column="salempx.visitedTimes" property="visitedTimes" jdbcType="INTEGER" />
        <result column="salempx.isRecommend" property="isRecommend" jdbcType="CHAR" />
        <result column="salempx.publishTime" property="publishTime" jdbcType="DATE" />
        <result column="salempx.messageDeadline" property="messageDeadline" jdbcType="DATE" />
        <result column="salempx.latestUpdateTime" property="latestUpdateTime" jdbcType="VARCHAR" />
        <result column="salempx.countermandTime" property="countermandTime" jdbcType="DATE" />  
      </resultMap>。
    <select id="queryForShowListByKeyword" resultMap="queryForShowListByKeywordResult" parameterClass="java.util.Map">
      select salempx.id, salempx.userId, salempx.tableNameId, salempx.isEnterprise,province.named, city.named, college.named,  title, 
          messagestatus.state, visitedTimes, isRecommend, publishTime, messageDeadline, latestUpdateTime,
          countermandTime
        from salempx,province,city,college,messagestatus
        where salempx.provinceId = province.id and salempx.cityId = city.id and salempx.collegeId = college.id and
              salempx.messageStatusId = messagestatus.id and provinceId IN $provinceStr$  $titleKeywordStr$
    </select>
    ----------
    以下是 DAO实现类 public Map queryForShowListByKeyword(Map keywordMap) {
    return getSqlMapClientTemplate().queryForMap("salempx.queryForShowListByKeyword", keywordMap, "id");
    }------
    以下是 测试类saleMsgMap = saleMPXDao.queryForShowListByKeyword(keywordMap);
    System.out.println(saleMsgMap.size());------
    结果saleMsgMap.size() 没有执行到。说明在saleMsgMap = saleMPXDao.queryForShowListByKeyword(keywordMap); 就出了错误。------
    我代码哪里有问题了呢? 请指正 谢谢了!
      

  7.   

    不好意思,用queryForList试试,有异常帖出来吗
      

  8.   

    select salempx.id, salempx.userId, salempx.tableNameId, 。给列名取个别名吧,然后把<result column="对应别名"。
      

  9.   

    其实也可以不用写resultMap的,直接这样也就行了
    <select id="aaaaaaaaa" resultClass="java.util.HashMap">  
    select .........
    </select>返回list的里面放的是map,map里面的key就是列名
      

  10.   


    那是怎么回事?你在saleMsgMap = saleMPXDao.queryForShowListByKeyword(keywordMap); try 一下,把异常打出来
      

  11.   

    <resultMap id="testMap"  class="java.util.HashMap"> <result property="stuname" column="stuname"/> 
    <result property="proname " column="proname "/> </resultMap> 
    <select id="queryDocById"  resultMap="allMarkstat" parameterClass="string">
      sql:select student.name stuname,province.name proname from student,province where student.id='1' and student.provinceId=province.id 
      </select>然后使用HashMap将读取到的内容取出来就可以了
      

  12.   

    <resultMap id="testMap"  class="java.util.HashMap"> XML code<result property="stuname" column="stuname"/> 
    <result property="proname " column="proname "/> </resultMap> 
    <select id="queryDocById"  resultMap="allMarkstat" parameterClass="string">
      sql:select student.name stuname,province.name proname from student,province where student.id='1' and student.provinceId=province.id 
      </select>然后使用HashMap将读取到的内容取出来就可以了
      

  13.   


    ----------------------
    可以执行到了,但是打印出来的结果是size等于0 ,但是数据库中是有对应2条数据的。还有,你前面说直接使用 java.util.HashMap 接收 ,我试了,会报错,说 在SQLMAP中没有 ID 为 java.util.HashMap这样的 RESULTMAP的定义
      

  14.   

    <select id="aaaaaaaaa" resultClass="java.util.HashMap"> 不是resultMap="java.util.HashMap"
      

  15.   

    晕死
    你加了try catch处理了异常,那后面当然能执行到了,关键你要看后台打印出什么异常
      

  16.   


    报出异常了 说的是我原先的provinceId是未明确的,我改过了,就不报错了。现在可以了,谢谢你了兄弟!我的QQ 309628014   加我吧 我在线