java - 从 mybatis select 获取不同 java 对象的多个值

标签 java sql mybatis

我试图执行一个查询,该查询返回与数据库中的 2 个表名称用户和设备相关的数据。我按以下方式使用 mybatis:

<resultMap id="userMap" type="com.motilink.server.User">
    <result property="company" column="USER_COMPANY" />
</resultMap>

<resultMap id="deviceMap" type="com.motilink.server.Device">
    <result property="deviceId" column="DEVICE_ID" />
    <result property="userId" column="USER_ID" />
</resultMap>

<select id="selectDeviceUser" resultMap="userMap,deviceMap">

    select device.deviceId
    as DEVICE_ID,
    user.company
    USER_COMPANY,
    device.userId as USER_ID from
    device,user where user.id =
    device.userId

</select>

当我尝试从 java 访问对象值时,我无法获取值,只能获取首先放置的 resultMap (userMap) 值。请告诉我我做错了什么。

访问结果图的代码:

        SqlSession session = MyBatisSqlSessionFactory.getSqlSessionFactory()
            .openSession();
    List<User> urs = (List<User>) session.selectList("selectDeviceUser",
            null);
    for (User u : urs) {
        System.out.println("Company: " + u.getCompany());
    }

    // List<Device> devices = (List<Device>) session.selectList(
    // "selectDeviceUser", null);
    // for (Device d : devices) {
    // System.out.println("Device ID: " + d.getDeviceId());
    // }

最佳答案

您可以设置resultType="hashmap"然后你的结果将是 List<HashMap<String, Object>> result; 。您可以通过 result.get("DEVICE_ID"), result.get("USER_COMPANY") etc. 访问字段

关于java - 从 mybatis select 获取不同 java 对象的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17743103/

相关文章:

java - 尝试为 LWJGL 运行此 java 测试命令时,我做错了什么?

php - 从一列显示多列的等效值

java - MyBatis 生成器单个 resultMap

java - 通过mybatis进行映射

java - 有没有办法知道 JPanel 是否已完成加载其内容?

java - 在 Javassist 中修改行号

java - Chromedriver 78可能存在问题,Selenium找不到在Chrome中打开的PDF的Web元素

sql - ClickHouse:如何以正确的方式存储 JSON 数据?

mysql - 如何显示与日期范围匹配的日期的匹配项

jdbc - MyBatis select 语句返回空值