How can I map MySQL query results to Java objects?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I am building a Dropwizard application where I want to easily map results from a MySQL database to java objects. I have seen this done before with an Object mapper, so I know it can be done, but unfortunately I can't remember where or how.
I created Immutable classes and I'd like to map the values to them. Here is an example Immutable:
@Value.Immutable
public interface Task {
int getTaskId();
int getCreatorId();
String getTitle();
String getDescription();
int getCreatedAt();
}
This is my DAO so far:
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);
}
It works with simpler data types like String or int.
java mysql jdbc dropwizard
add a comment |
I am building a Dropwizard application where I want to easily map results from a MySQL database to java objects. I have seen this done before with an Object mapper, so I know it can be done, but unfortunately I can't remember where or how.
I created Immutable classes and I'd like to map the values to them. Here is an example Immutable:
@Value.Immutable
public interface Task {
int getTaskId();
int getCreatorId();
String getTitle();
String getDescription();
int getCreatedAt();
}
This is my DAO so far:
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);
}
It works with simpler data types like String or int.
java mysql jdbc dropwizard
1
The keyword to search for isjava ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?
– Andreas
Nov 26 '18 at 22:34
add a comment |
I am building a Dropwizard application where I want to easily map results from a MySQL database to java objects. I have seen this done before with an Object mapper, so I know it can be done, but unfortunately I can't remember where or how.
I created Immutable classes and I'd like to map the values to them. Here is an example Immutable:
@Value.Immutable
public interface Task {
int getTaskId();
int getCreatorId();
String getTitle();
String getDescription();
int getCreatedAt();
}
This is my DAO so far:
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);
}
It works with simpler data types like String or int.
java mysql jdbc dropwizard
I am building a Dropwizard application where I want to easily map results from a MySQL database to java objects. I have seen this done before with an Object mapper, so I know it can be done, but unfortunately I can't remember where or how.
I created Immutable classes and I'd like to map the values to them. Here is an example Immutable:
@Value.Immutable
public interface Task {
int getTaskId();
int getCreatorId();
String getTitle();
String getDescription();
int getCreatedAt();
}
This is my DAO so far:
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);
}
It works with simpler data types like String or int.
java mysql jdbc dropwizard
java mysql jdbc dropwizard
asked Nov 26 '18 at 22:30
saklsakl
265
265
1
The keyword to search for isjava ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?
– Andreas
Nov 26 '18 at 22:34
add a comment |
1
The keyword to search for isjava ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?
– Andreas
Nov 26 '18 at 22:34
1
1
The keyword to search for is
java ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?– Andreas
Nov 26 '18 at 22:34
The keyword to search for is
java ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?– Andreas
Nov 26 '18 at 22:34
add a comment |
1 Answer
1
active
oldest
votes
To do this, I created a simple mapper for my object. This is what the Mapper looks like:
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();
}
}
(The builder is because it's an Immutable, but it can be replaced with new Task() in other cases)
I then updated my DAO with the mapper annotation to look like this:
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);
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53490091%2fhow-can-i-map-mysql-query-results-to-java-objects%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
To do this, I created a simple mapper for my object. This is what the Mapper looks like:
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();
}
}
(The builder is because it's an Immutable, but it can be replaced with new Task() in other cases)
I then updated my DAO with the mapper annotation to look like this:
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);
}
add a comment |
To do this, I created a simple mapper for my object. This is what the Mapper looks like:
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();
}
}
(The builder is because it's an Immutable, but it can be replaced with new Task() in other cases)
I then updated my DAO with the mapper annotation to look like this:
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);
}
add a comment |
To do this, I created a simple mapper for my object. This is what the Mapper looks like:
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();
}
}
(The builder is because it's an Immutable, but it can be replaced with new Task() in other cases)
I then updated my DAO with the mapper annotation to look like this:
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);
}
To do this, I created a simple mapper for my object. This is what the Mapper looks like:
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();
}
}
(The builder is because it's an Immutable, but it can be replaced with new Task() in other cases)
I then updated my DAO with the mapper annotation to look like this:
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);
}
answered Nov 26 '18 at 23:14
saklsakl
265
265
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53490091%2fhow-can-i-map-mysql-query-results-to-java-objects%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
The keyword to search for is
java ORM, where ORM means "Object-Relational Mapping". See e.g. What Java ORM do you prefer, and why?– Andreas
Nov 26 '18 at 22:34