Please help me,
I am a newbie at DropWizard and I want to Use DropWizard with JDBI, I have
created DAO and Resources as Documentation guides but I'm getting a
NullPointerException every time.
Please guide me through the correct way of implementing JDBI.
Attached the Files which I've coded
--
You received this message because you are subscribed to the Google Groups
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.
import org.skife.jdbi.v2.sqlobject.Bind;
import org.skife.jdbi.v2.sqlobject.BindBean;
import org.skife.jdbi.v2.sqlobject.SqlQuery;
import org.skife.jdbi.v2.sqlobject.SqlUpdate;
import org.skife.jdbi.v2.sqlobject.customizers.RegisterMapper;
import java.util.List;
/**
* Created by viraj on 01-02-2017.
*/
@RegisterMapper(PersonMapper.class)
public interface PersonDAO {
@SqlQuery("select * from PERSON")
List<Person> getAll();
@SqlQuery("select * from PERSON where ID = :id")
Person findById(@Bind("id") int id);
@SqlUpdate("delete from PERSON where ID = :id")
int deleteById(@Bind("id") int id);
@SqlUpdate("update PERSON set NAME = :name where ID = :id")
int update(@BindBean Person person);
@SqlUpdate("insert into PERSON (ID, NAME) values (:id, :name)")
int insert(@BindBean Person person);
}
import org.skife.jdbi.v2.StatementContext;
import org.skife.jdbi.v2.tweak.ResultSetMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class PersonMapper implements ResultSetMapper<Person>
{
public Person map(int index, ResultSet resultSet, StatementContext statementContext) throws SQLException
{
return new Person(resultSet.getInt("ID"), resultSet.getString("NAME"));
}
}
import javax.validation.Valid;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;
@Path("/person")
@Consumes({MediaType.APPLICATION_JSON})
@Produces({MediaType.APPLICATION_JSON})
public class PersonResource {
PersonDAO personDAO;
public PersonResource(PersonDAO personDAO) {
this.personDAO = personDAO;
}
@GET
@Path("/xxx")
public List<Person> gety(){
return personDAO.getAll();
}
@GET
public List<Person> getAll(){
return personDAO.getAll();
}
@GET
@Path("/{id}")
public Person get(@PathParam("id") Integer id){
return personDAO.findById(id);
}
@POST
public Person add(@Valid Person person) {
personDAO.insert(person);
return person;
}
@PUT
@Path("/{id}")
public Person update(@PathParam("id") Integer id, @Valid Person person) {
Person updatePerson = new Person(id, person.getName());
personDAO.update(updatePerson);
return updatePerson;
}
@DELETE
@Path("/{id}")
public void delete(@PathParam("id") Integer id) {
personDAO.deleteById(id);
}
}
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;
import io.dropwizard.jdbi.DBIFactory;
import org.skife.jdbi.v2.DBI;
public class Application extends io.dropwizard.Application<Configuration> {
public static void main(String[] args) throws Exception {
new Application().run(args);
}
@Override
public String getName() {
return "dropwizard-jdbi";
}
@Override
public void initialize(Bootstrap<Configuration> bootstrap) {
}
@Override
public void run(Configuration configuration, Environment environment) throws ClassNotFoundException {
final DBIFactory factory = new DBIFactory();
final DBI jdbi = factory.build(environment, configuration.getDataSourceFactory(), "maria");
final PersonDAO personDAO = jdbi.onDemand(PersonDAO.class);
final PersonResource personResource = new PersonResource(personDAO);
environment.jersey().register(personResource);
}
}import com.fasterxml.jackson.annotation.JsonProperty;
import io.dropwizard.db.DataSourceFactory;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
/**
* Created by viraj on 01-02-2017.
*/
public class Configuration extends io.dropwizard.Configuration{
@Valid
@NotNull
@JsonProperty("database")
private DataSourceFactory database = new DataSourceFactory();
public DataSourceFactory getDataSourceFactory() {
return database;
}
}
import com.fasterxml.jackson.annotation.JsonProperty;
import javax.validation.constraints.NotNull;
public class Person {
@NotNull
@JsonProperty
private Integer id;
@NotNull
@JsonProperty
private String name;
public Person() {
// Jackson deserialization
}
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Person)) return false;
Person that = (Person) o;
if (!getId().equals(that.getId())) return false;
if (!getName().equals(that.getName())) return false;
return true;
}
}