Converter a informação "M" da coluna "sexo" para "Masculino" pela classe DAO
12 respostas
B
bsvieira
A conversão estava sendo feita pela classe do DTO, porém surgiu a necessidade de converter essa inofrmação pela classe DAO.
publicList<UsuarioDTO>listar(){List<UsuarioDTO>lista=null;Stringsql="select * from usuario";try{stmt=conn.prepareStatement(sql);ResultSetrs=stmt.executeQuery();lista=newArrayList<UsuarioDTO>();while(rs.next()){UsuarioDTOusuario=newUsuarioDTO();usuario.setId(rs.getLong("id_usuario"));usuario.setNome(rs.getString("nome_usuario"));usuario.setEmail(rs.getString("email_usuario"));usuario.setSexo(rs.getString("sexo_usuario"));Datedata=rs.getDate("dataNascimento_usuario");usuario.setDataNascimento(DataUtil.parseData(data));lista.add(usuario);}rs.close();stmt.close();}catch(SQLExceptione){System.out.println(e.getMessage());}returnlista;}
Crie um enum sexo, com código e valor. código vai ser ‘M’ e o value “Masculino”.
Assim vc consegue pegar o nome completo do sexo sem problemas
B
bsvieira
Eu já criei a classe [color=red]SexoEnumerarion [/color] na tela de cadastro a informação vem como “Masculino” e passa para o Banco “M”. Porém na tela “listar.jsp” a informação vem como CHAR “M”.
PublicenumSexoEnumeration{MASCULINO("M","Masculino"),FEMININO("F","Feminino");privatefinalStringcode;privatefinalStringmessage;/** * Construtor do enum * @param code - Valor do enum * @param message - Label do enum */privateSexoEnumeration(Stringcode,Stringmessage){this.code=code;this.message=message;}/** * Returns field code. * @return code */publicStringgetCode(){returncode;}/** * Returns field message. * @return message */publicStringgetMessage(){returnmessage;}/** * Lista retorna valores do Enum * @return vRetorno */publicstaticList<SexoEnumeration>getValues(){List<SexoEnumeration>vRetorno=newArrayList<SexoEnumeration>();SexoEnumeration[]vList=SexoEnumeration.values();for(SexoEnumerationvSexo:vList){vRetorno.add(vSexo);}returnvRetorno;}}
Foi o que disse na resposta acima, não existe a enumeração SexoEnumeration.M, tem SexoEnumeration.MASCULINO, então para recuperar o valor pelo código(‘M’) vc vai precisar implementar o método citado acima.
Eu estou implementando no UsuarioDAO, so que agora ele retornqa todos como “FEMININO”.
publicList<UsuarioDTO>listar(){List<UsuarioDTO>lista=null;Stringsql="select * from usuario";try{stmt=conn.prepareStatement(sql);ResultSetrs=stmt.executeQuery();lista=newArrayList<UsuarioDTO>();while(rs.next()){UsuarioDTOusuario=newUsuarioDTO();usuario.setId(rs.getLong("id_usuario"));usuario.setNome(rs.getString("nome_usuario"));usuario.setEmail(rs.getString("email_usuario"));// usuario.setSexo(rs.getString("sexo_usuario"));if(rs.getString("sexo_usuario")=="M")usuario.setSexo("Masculino");elseusuario.setSexo("Feminino");Datedata=rs.getDate("dataNascimento_usuario");usuario.setDataNascimento(DataUtil.parseData(data));lista.add(usuario);}rs.close();stmt.close();}catch(SQLExceptione){System.out.println(e.getMessage());}returnlista;}}
ErickRAR
comparar String é com o método equals da classe String, não com ==
B
bsvieira
Isso mesmo, funcionou muito obrigado pela ajuda!!!
L
lsjunior
Rapaz, era pra fazer assim, usando a enumeração. Do jeito que tá sempre vai ser Feminino.
Ou usando a enum na classe usuário, que fica melhor ainda. usuario.setSexo(SexoEnumeraton.valueOfCode(rs.getString(“sexo_usuario”))); // Usuario.sexo é a enum SexoEnumeration