Pesquisar no banco de dados com %palavra%

Tô tentando criar um metodo para pesquisar por palavra no db, mas tá funfando não…
alguém pode mostrar a maneira certa?

agradeço desde já

o que fiz é…

public ArrayList pesquisarMedico(String nome) throws SQLException{
String sql = “SELECT * FROM medico WHERE nome LIKE ?”;
stmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);

    stmt.setString(1, "%"+nome+"%");
    
    rs = stmt.executeQuery();
    ArrayList<Medico> retorno = new ArrayList<Medico>();
    while(rs.next()){
        Medico medico = new Medico();
        medico.setId(rs.getInt("id"));
        medico.setNome(rs.getString("nome"));
        medico.setCrm(rs.getInt("crm"));
        medico.setEspecialidade_id(rs.getString("especialidade_id"));
        
        retorno.add(medico);
        
        return retorno;
        
    }
    
    .......

d

public List<Medico> pesquisarMedico(String nome) throws SQLException{
    List<Medico> medicos = new ArrayList<Medico>();
    String sql = “SELECT * FROM medico WHERE nome LIKE ?”;
    PreparedStatement stmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
    stmt.setString(1, "%"+nome+"%");
    ResultSet rs = stmt.executeQuery();
    while(rs.next()){
        Medico medico = new Medico();
        medico.setId(rs.getInt("id"));
        medico.setNome(rs.getString("nome"));
        medico.setCrm(rs.getInt("crm"));
        medico.setEspecialidade_id(rs.getString("especialidade_id"));
        medicos.add(medico);
    }
    return medicos; // o return da lista, fica fora do laço, se ficar dentro do laço, só vai retornar o primeiro registro
}