Как сделать SELECT EXISTS в dropwizard - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь найти способ сделать SELECT EXISTS в dropwizard, потому что я создаю запрос POST, который создает профили. Каждый профиль имеет свой идентификационный номер. Я делаю это потому, что не могу создать профиль с таким же идентификатором в другом профиле. Как мне сделать SELECT EXISTS в dropwizard, который возвращает int. Возвращает 1, если истина, и 0, если ложь, как в mySQL. Если 1, то профиль существует и не может создать другой профиль с тем же идентификатором. Я считаю, что я должен использовать createQuery. Есть ли способ, которым я могу использовать SELECT EXISTS в dropwizard

int j = handle.createQuery("SELECT EXISTS(SELECT * FROM profile WHERE id='"+id+"')");

Я пытался использовать execute, но он все время возвращает -1.

int j = handle.execute("SELECT EXISTS(SELECT * FROM profile WHERE id='"+id+"')");

МОЙ POST CODE

@POST
@Path("/profile")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createProfile(Profile newp)
  {
    Jdbi jdbi = Jdbi.create("jdbc:mysql://localhost:3306/homework", "root", "linuxserver");
    Handle handle = null;
    try
    {
        handle = jdbi.open();
        int check = 0;

        /*Want my check to return a 1 or a 0*/
        check = handle.createQuery("select exists(select * from profile where id='"+newp.getId()+"')");  /


        System.out.println(check);
        System.out.println(newp.getId());

        if(check == 1)
        {
            return Response.status(500, "ID already exists").build();
        }
        else
        {
            handle.execute("INSERT INTO profile (id,name,lastname,age,favTeam)" + 
                    "VALUES('" + newp.getId() + "' , '"+newp.getUsername()+ "' , '"+newp.getLastname()+"', '"+newp.getAge()+"' , '"+newp.getFavTeam()+"')");

                return Response.ok().build();
        }

    }finally
    {
        if(handle != null)
            handle.close();
    }

    }
...