easyexcel converter 中注入一个mapper
时间: 2023-11-18 09:05:46 浏览: 57
使用阿里巴巴的EasyExcel库将数据和图片导出到一个Excel文件
EasyExcel Converter 是一个用于读写 Excel 的工具,它并不支持注入 Mapper。如果您需要在读取 Excel 数据后进行数据库操作,可以在读取 Excel 数据的代码中调用 Mapper 进行操作。具体实现方法如下:
1. 在需要操作的 Mapper 中添加注解 `@Mapper`,并在需要调用 Mapper 的类中使用 `@Autowired` 注解注入该 Mapper。
```java
@Mapper
public interface UserMapper {
User getUserById(Long id);
}
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void importUsers(InputStream inputStream) {
// 读取 Excel 数据
List<UserDto> userDtoList = EasyExcel.read(inputStream, UserDto.class).sheet().doReadSync();
// 调用 Mapper 进行数据库操作
for (UserDto userDto : userDtoList) {
User user = new User();
user.setName(userDto.getName());
user.setAge(userDto.getAge());
userMapper.insert(user);
}
}
}
```
2. 在 Excel 实体类中添加一个转换方法,将 Excel 实体类转换为数据库实体类,并在转换方法中调用 Mapper 进行查询操作。
```java
public class UserDtoConverter {
@Autowired
private UserMapper userMapper;
public User convert(UserDto userDto) {
User user = new User();
user.setName(userDto.getName());
user.setAge(userDto.getAge());
user.setDepartment(userMapper.getDepartmentById(userDto.getDepartmentId()));
return user;
}
}
public class UserDto {
private String name;
private Integer age;
private Long departmentId;
public User convertToUser(UserDtoConverter userDtoConverter) {
return userDtoConverter.convert(this);
}
}
```
在读取 Excel 数据时,可以通过 `userDto.convertToUser(userDtoConverter)` 方法将 Excel 实体类转换为数据库实体类,然后调用 Mapper 进行操作。
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public void importUsers(InputStream inputStream) {
// 读取 Excel 数据
List<UserDto> userDtoList = EasyExcel.read(inputStream, UserDto.class).sheet().doReadSync();
// 转换 Excel 实体类为数据库实体类,并调用 Mapper 进行数据库操作
UserDtoConverter userDtoConverter = new UserDtoConverter();
for (UserDto userDto : userDtoList) {
User user = userDto.convertToUser(userDtoConverter);
userMapper.insert(user);
}
}
}
```
阅读全文