list流map自定义字段名
时间: 2023-10-21 13:34:51 浏览: 36
对于使用List流的情况,可以使用map方法将自定义字段名应用于List中的每个元素。以下是一个示例代码:
List<User> userList = new ArrayList<>();
// 假设userList已经被初始化并填充了一些User对象
List<Map<String, Object>> customUserList = userList.stream()
.map(user -> {
Map<String, Object> customUserMap = new HashMap<>();
customUserMap.put("姓名", user.getName());
customUserMap.put("年龄", user.getAge());
customUserMap.put("性别", user.getGender());
return customUserMap;
})
.collect(Collectors.toList());
在上面的代码中,我们将List<User>转换为List<Map<String, Object>>,并使用自定义字段名作为Map的键。这样,我们就可以使用这些自定义字段名来访问List中的元素,而不必依赖原始对象的字段名。
相关问题
mybatis sql自定义返回map对象
在 MyBatis 中,可以使用 ResultMap 来定义自定义的返回类型为 Map 对象的 SQL 查询。下面是一个示例:
首先,在 Mapper.xml 文件中定义 ResultMap:
```xml
<resultMap id="mapResult" type="java.util.HashMap">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
<!-- 添加其他需要的字段映射 -->
</resultMap>
```
然后,在 SQL 查询语句中使用该 ResultMap:
```xml
<select id="selectCustomMap" resultMap="mapResult">
SELECT id, name, age
FROM your_table
</select>
```
最后,在对应的 Mapper 接口中声明方法:
```java
List<Map<String, Object>> selectCustomMap();
```
这样,你就可以调用该方法来执行自定义返回 Map 对象的 SQL 查询了。注意,返回类型为 List<Map<String, Object>>,每个 Map 对象代表一条查询结果,其中键为字段名,值为字段值。
希望对你有帮助!如果还有其他问题,请继续提问。
mybatis plus 批量保存 List<Map
<Mybatis-Plus>提供了一个方法`insertBatchSomeColumn(List<T> entityList)`,可以实现批量保存实体类列表,同时支持批量保存时指定需要插入的字段。
但是,如果要保存的数据是`List<Map<String, Object>>`类型的,需要做一些额外的处理:
1. 自定义一个Mapper接口,定义一个方法`batchInsert(List<Map<String, Object>> list)`。
2. 在Mapper.xml文件中实现`batchInsert`方法,使用Mybatis-Plus提供的`insertBatchSomeColumn`方法进行批量保存。
下面是示例代码:
Mybatis-Plus版本:3.4.1
Java代码:
```java
public interface CustomMapper {
void batchInsert(List<Map<String, Object>> list);
}
```
Mapper.xml代码:
```xml
<mapper namespace="com.example.CustomMapper">
<insert id="batchInsert" parameterType="java.util.List">
insert into table_name
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="list[0].keySet()" item="column">
<if test="column != null">
${column},
</if>
</foreach>
</trim>
values
<foreach collection="list" item="item" separator=",">
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="item.entrySet()" item="entry">
<if test="entry.value != null">
#{entry.value},
</if>
</foreach>
</trim>
</foreach>
</insert>
</mapper>
```
使用示例:
```java
@Autowired
private CustomMapper customMapper;
@Test
void testBatchInsert() {
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("column1", "value1");
map1.put("column2", 2);
Map<String, Object> map2 = new HashMap<>();
map2.put("column1", "value3");
map2.put("column2", 4);
list.add(map1);
list.add(map2);
customMapper.batchInsert(list);
}
```
注意事项:
1. `list`中每个元素必须包含相同的键值对,否则会保存失败。
2. `list`中的键值对的顺序可以不同,因为在Mapper.xml文件中会根据键名动态生成SQL语句。
3. 对于需要自增的主键,可以使用MySQL的`INSERT INTO...ON DUPLICATE KEY UPDATE`语句实现批量保存和更新。