gpt4 book ai didi

java - 如何将 MySQL 查询结果映射到 Java 对象?

转载 作者:行者123 更新时间:2023-11-29 09:58:15 27 4
gpt4 key购买 nike

我正在构建一个 Dropwizard我想轻松地将 MySQL 数据库的结果映射到 java 对象的应用程序。我以前见过用对象映射器完成此操作,所以我知道它可以完成,但不幸的是我不记得在哪里或如何完成。

我创建了不可变类,我想将值映射到它们。这是一个不可变的示例:

@Value.Immutable
public interface Task {
int getTaskId();
int getCreatorId();
String getTitle();
String getDescription();
int getCreatedAt();
}

到目前为止,这是我的 DAO:

public interface TasksDAO {
@SqlQuery("select task_id, title, description, creator_id, created_at from tasks")
Set<ImmutableTask> getAllTasks();

@SqlQuery("select task_id, title, description, creator_id, created_at from tasks where id = :id")
ImmutableTask getTaskById(@Bind("id") int id);
}

它适用于更简单的数据类型,例如Stringint

最佳答案

为此,我为我的对象创建了一个简单的映射器。这就是映射器的样子:

public class TaskMapper implements ResultSetMapper<ImmutableTask> {
public ImmutableTask map(int index, ResultSet r, StatementContext ctx) throws SQLException {
return ImmutableTask.builder()
.taskId(r.getInt("task_id"))
.creatorId(r.getInt("creator_id"))
.title(r.getString("title"))
.description(r.getString("description"))
.createdAt(r.getTimestamp("created_at"))
.build();
}
}

(构建器是因为它是 Immutable,但在其他情况下可以用 new Task() 替换)

然后,我使用映射器注释更新了我的 DAO,如下所示:

public interface TasksDAO {
@SqlQuery("select task_id, title, description, creator_id, created_at from tasks")
@Mapper(TaskMapper.class)
Set<ImmutableTask> getAllTasks();

@SqlQuery("select task_id, title, description, creator_id, created_at from tasks where task_id = :id")
@Mapper(TaskMapper.class)
ImmutableTask getTaskById(@Bind("id") int id);
}

关于java - 如何将 MySQL 查询结果映射到 Java 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53490091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com