当前位置: 首页 > 知识库问答 >
问题:

在Mybatis中选择整数列表作为另一个结果映射中的集合

莘欣怿
2023-03-14
class Mapping {
private String name;
private List<Integer> ids;
}

Mybatis如下:

<resultMap id="mapping" type="some.package.Mapping">
        <result property="name" column="name"/>
        <collection property="ids" column="id" javaType="java.util.List" ofType="java.lang.Integer" />
</resultMap>

<select id="getMapping" resultMap="mapping">
        SELECT name, id
        FROM mapping
    </select>

这个代码对我不适用。我错过了什么?

共有1个答案

谭毅然
2023-03-14

如果有像List这样的自定义对象,那么我们如何为它编写XML conf-

public class AllEmployee{
List<Employee> employees;
}

public class Employee {
    String globalId;
    int empId;
    String name;
    List<Department> departmentList;
    }
    
public class Department {
    int empId;
    int depId;
    String depValue;
}

MyBatis xml配置-

<resultMap id="empMapper" type="Employee">
        <id property="globalId" column="globalId" />
        <result property="empId" column="empId" />
        <result property="name" column="name" />
        <collection property="departmentList" javaType="ArrayList" ofType="Department"/>
        <id property="empId" column="empId" />
        <result property="depId" column="depId" />
        <result property="depValue" column="depValue" />
        </collection>
</resultMap>

<select id="retriveAllEmployees" resultMap="empMapper">
        SELECT ee.empId, ee.name, dt.depId, dt.depValue FROM employee ee
        INNER JOIN department dt on dt.empId = ee.empId
        <where>
            globalId IN
            <foreach collection="globalIdList" item="globalId" separator=", " open="(" close=")">
                #{globalId}
            </foreach>
        </where>
    </select>

正确的json输出应该是-

{
  "employees": [
    {
      "empId": 1,
      "name": "alton",
      "departmentList": [
        {
          "depId": 2,
          "depValue": "fire"
        },
        {
          "depId": 4,
          "depValue": "ice"
        }
      ]
    }
  ]
}
{
  "employees": [
    {
      "empId": 1,
      "name": "alton",
      "departmentList": [
        {
          "depId": 2,
          "depValue": "fire"
        }
      ]
    },
    {
      "empId": 1,
      "name": "alton",
      "departmentList": [
        {
          "depId": 4,
          "depValue": "ice"
        }
      ]
    }
  ]
}
 类似资料:
  • 使用Ruby 2.0和Rails 4.0.2,我有两个表。其中一个表在第二个表的_form视图中填充选择列表集合。我需要从选择列表中获取用户选择的结果,并在另一个表字段中输入该名称值,而不是选择的ID,而是实际的单词。我想在没有连接表的情况下执行此操作。 我一直在用书籍和作者尝试一些短裙,并观看Ryan Bate的视频短裙,但没有人详细解释如何解决上述问题。我很困惑。如果我能理解这个过程,我可以在

  • 问题内容: 表格如下: 我想获取班级列表,以及每个班级-属于每个班级的学生人数。我怎样才能做到这一点? 问题答案: 您需要这样做-

  • 问题内容: 我有2张桌子,一张用于会员,另一张用于他们的服务。这些是MySQL 5.6服务器上的InnoDB表。 会员表: 服务表: 我尝试达到以下结果: 因此,如果服务表中存在用户ID,则列服务将为true或false。 我尝试使用JOIN和子查询来完成此操作,但没有成功,因此我需要您的帮助;) 问题答案: 使用服务表,请尝试此查询

  • 问题内容: [‘a’,’a’,’b’,’c’,’c’,’c’] 至 和 问题答案: x=[‘a’,’a’,’b’,’c’,’c’,’c’] >>> map(x.count,x) [2, 2, 1, 3, 3, 3] >>> dict(zip(x,map(x.count,x))) {‘a’: 2, ‘c’: 3, ‘b’: 1} >>>

  • 问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以

  • 问题内容: 我寻求帮助的以下问题:我有两个表 列,, 列,,, 我想将数据从(仅列)复制到(到列)。该均在表中相同(有重复项的ID),所以这就是我要复制到新表,并保持在一个单一的行中的所有数量与每个位置为一列的原因。我正在使用以下查询,但它不起作用 问题答案: 如果为空,请尝试以下插入语句: 如果已经包含值,请尝试以下更新语句: