mybatis运行中改变resultmap
时间: 2023-08-10 22:07:39 浏览: 47
Mybatis中的ResultMap可以用来映射一对多的关系。在ResultMap中,可以使用collection标签来定义一个集合属性,用来表示一对多的关系。在集合属性中,可以使用result标签来定义子对象的映射规则。例如:
<resultMap id="userMap" type="User">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="orders" ofType="Order">
<id property="id" column="order_id"/>
<result property="name" column="order_name"/>
</collection>
</resultMap>
在上面的例子中,User对象包含一个orders属性,用来表示一个用户可以有多个订单。使用collection标签来定义orders属性,并使用ofType属性来指定子对象的类型为Order。在集合属性中,使用id和result标签来定义子对象的映射规则。这样,在查询结果中,就可以将多个订单映射到一个User对象中的orders属性中。
相关问题
mybatis-plus中resultMap
MyBatis-Plus 是一个 MyBatis 的增强工具,它提供了一系列增强功能来简化 MyBatis 的使用。其中之一就是提供了一个比 MyBatis 更加方便的结果映射方式,就是通过 `ResultMap`。
`ResultMap` 是 MyBatis 提供的结果映射器,它可以将数据库查询返回的结果映射成 Java 对象。MyBatis-Plus 的 `ResultMap` 功能就是在 MyBatis 的 `ResultMap` 基础上进行的增强。
在 MyBatis-Plus 中,我们可以通过 `@TableName` 注解来指定实体类和数据库表的映射关系,然后使用 `@TableField` 注解来指定实体类中的属性和数据库表中的字段的映射关系。
使用 MyBatis-Plus 的 `ResultMap` 功能时,我们只需要在实体类中定义一个 `ResultMap`,然后在查询语句中使用该 `ResultMap` 即可将查询结果映射成 Java 对象。
以下是一个使用 MyBatis-Plus `ResultMap` 的示例:
```java
@TableName("user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("username")
private String username;
@TableField("password")
private String password;
// getter 和 setter 省略
}
// 定义 ResultMap
private static final ResultMap USER_RESULT_MAP = new ResultMap.Builder(configuration, "userResultMap", User.class, new ArrayList<ResultMapping>())
.id(new ResultMapping.Builder(configuration, "id", "id", Long.class).build())
.result(new ResultMapping.Builder(configuration, "username", "username", String.class).build())
.result(new ResultMapping.Builder(configuration, "password", "password", String.class).build())
.build();
// 使用 ResultMap 查询
List<User> userList = sqlSession.selectList("com.example.mapper.UserMapper.selectUserList", null, new RowBounds(0, 10), USER_RESULT_MAP);
```
在上面的示例中,我们首先使用 `@TableName` 和 `@TableField` 注解指定了实体类和数据库表之间的映射关系。然后我们定义了一个 `ResultMap`,并在其中指定了实体类中的属性和数据库表中的字段的映射关系。最后我们在查询语句中使用该 `ResultMap` 将查询结果映射成 Java 对象。
Mybatis中resultType 与resultMap
在 Mybatis 中,`resultType` 和 `resultMap` 都是用来指定查询结果的数据类型的。
`resultType` 是一种简单的类型指定方式,可以指定基本数据类型(如 int、long 等)或 Java Bean 类型(如 User、Order 等),Mybatis 会根据查询结果自动进行类型转换。
`resultMap` 则是一种更为灵活的类型指定方式,需要手动编写映射规则,将查询结果与 Java 对象进行映射。`resultMap` 可以指定复杂的映射关系,包括属性名、列名、类型转换等,可以更好地支持高级查询和结果映射。但相对来说,`resultMap` 的编写和维护难度较大。
在使用 Mybatis 进行开发时,一般建议优先使用 `resultMap` 进行结果映射,这样可以获得更好的灵活性和可维护性。但对于一些简单的查询,可以使用 `resultType` 进行快速开发。