mybatis的select返回类型问题。

时间:2022-05-06 16:17:46
<select id="selectCardInfo"  resultMap="" parameterType="java.lang.String" >
 SELECT CLOSE_CODE,CARD_ID FROM CCRD_CARD,CCRD_ACCT WHERE CCRD_CARD.XACCOUNT = CCRD_ACCT.XACCOUNT AND CCRD_CARD.CUSTR_NBR =#{custrNbr,jdbcType=VARCHAR}
 </select>
返回的两个字段 CLOSE_CODE,CARD_ID 分别在两张不同的表CCRD_CARD,CCRD_ACCT 中,那么我该返回什么类型呢?
该怎么写方法的返回类型

11 个解决方案

#1


别用resultMap呀,定义一个包括这两个字段的pojo,然后用resultType呗!

#2


#3


引用 楼主 Ethan_Wan 的回复:
<select id="selectCardInfo"  resultMap="" parameterType="java.lang.String" >
 SELECT CLOSE_CODE,CARD_ID FROM CCRD_CARD,CCRD_ACCT WHERE CCRD_CARD.XACCOUNT = CCRD_ACCT.XACCOUNT AND CCRD_CARD.CUSTR_NBR =#{custrNbr,jdbcType=VARCHAR}
 </select>
返回的两个字段 CLOSE_CODE,CARD_ID 分别在两张不同的表CCRD_CARD,CCRD_ACCT 中,那么我该返回什么类型呢?
该怎么写方法的返回类型
+1

#4


自己定义一个类,里面包括CLOSE_CODE,CARD_ID这两个字段,然后再resultType设置为这个类...

#5


引用 1 楼 longtian1213 的回复:
别用resultMap呀,定义一个包括这两个字段的pojo,然后用resultType呗!
求帮助 http://bbs.csdn.net/topics/390797939?page=1#post-397461517

#6


定义返回类型为Map
resultMap="java.util.Map" 

#7


查询出来A、B、C、D4个字段,AB是一张表的,CD是一张表的,你想确定怎么取返回类型,貌似是这样对吧?
有两种方案:
方案1:返回类型设置成map,map的key就是你ABCD四个字段,你get就能获取值了。
方案2:定义一个对象,这个对象拥有ABCD这四个属性,然后你直接返回成这个对象,你获取的时候List<?>就OK了,?就是你自己定义的对象了。

#8


如果你这个只是个别的不需要复合关联的直接用resultType="map"就可以了。如果两张表之间有关联关系的自己配置个resultMap
这里是mybatis的官网 http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html#Result_Maps,例子代码说明非常全面

#9


上面的两种方法都可以。上面的都是正解。

#10


亲测#7第二个方法可用:

// User类
package com.test.domain;

public class User {

private String billId;

public String getBillId() {
return billId;
}
public void setBillId(String billId) {
this.billId = billId;
}

}

//xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.test.mapping.UserMapper">
  
   <resultMap id="UserMap" type="com.test.domain.User" >
<result column="bill_id" property="billId" jdbcType="VARCHAR" javaType="String" />
</resultMap>

     <select id="getUser" parameterType="int" resultMap="UserMap">
         select cust_id,user_id,bill_id from so.ins_user where user_id = #{id}
         <!-- select count(1) from so.ins_user where user_id = #{id} -->
     </select>
 </mapper>

#11


定义一个类包含这两个字段


或者在多的一方引入另一方的对象
放回引入方对象

#1


别用resultMap呀,定义一个包括这两个字段的pojo,然后用resultType呗!

#2


#3


引用 楼主 Ethan_Wan 的回复:
<select id="selectCardInfo"  resultMap="" parameterType="java.lang.String" >
 SELECT CLOSE_CODE,CARD_ID FROM CCRD_CARD,CCRD_ACCT WHERE CCRD_CARD.XACCOUNT = CCRD_ACCT.XACCOUNT AND CCRD_CARD.CUSTR_NBR =#{custrNbr,jdbcType=VARCHAR}
 </select>
返回的两个字段 CLOSE_CODE,CARD_ID 分别在两张不同的表CCRD_CARD,CCRD_ACCT 中,那么我该返回什么类型呢?
该怎么写方法的返回类型
+1

#4


自己定义一个类,里面包括CLOSE_CODE,CARD_ID这两个字段,然后再resultType设置为这个类...

#5


引用 1 楼 longtian1213 的回复:
别用resultMap呀,定义一个包括这两个字段的pojo,然后用resultType呗!
求帮助 http://bbs.csdn.net/topics/390797939?page=1#post-397461517

#6


定义返回类型为Map
resultMap="java.util.Map" 

#7


查询出来A、B、C、D4个字段,AB是一张表的,CD是一张表的,你想确定怎么取返回类型,貌似是这样对吧?
有两种方案:
方案1:返回类型设置成map,map的key就是你ABCD四个字段,你get就能获取值了。
方案2:定义一个对象,这个对象拥有ABCD这四个属性,然后你直接返回成这个对象,你获取的时候List<?>就OK了,?就是你自己定义的对象了。

#8


如果你这个只是个别的不需要复合关联的直接用resultType="map"就可以了。如果两张表之间有关联关系的自己配置个resultMap
这里是mybatis的官网 http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html#Result_Maps,例子代码说明非常全面

#9


上面的两种方法都可以。上面的都是正解。

#10


亲测#7第二个方法可用:

// User类
package com.test.domain;

public class User {

private String billId;

public String getBillId() {
return billId;
}
public void setBillId(String billId) {
this.billId = billId;
}

}

//xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.test.mapping.UserMapper">
  
   <resultMap id="UserMap" type="com.test.domain.User" >
<result column="bill_id" property="billId" jdbcType="VARCHAR" javaType="String" />
</resultMap>

     <select id="getUser" parameterType="int" resultMap="UserMap">
         select cust_id,user_id,bill_id from so.ins_user where user_id = #{id}
         <!-- select count(1) from so.ins_user where user_id = #{id} -->
     </select>
 </mapper>

#11


定义一个类包含这两个字段


或者在多的一方引入另一方的对象
放回引入方对象