Ajuda com MVC

Boa tarde amigo,
estou desenvolvendo um sistema de cadastro com padrão MVC.
Segue abaixo meu modelo, mas não estou conseguindo continuar, não sei como implementar meu controle.
Poderia me da uma ajuda como faço para implementar o meu controle.

public class ModeloUsuario {

private int iduser;
private String usuario;
private String fone;
private String login;
private String senha;
private String perfil;

Connection conn = null;
PreparedStatement pst = null;
ResultSet rs = null;


public ModeloUsuario() {
}

public ModeloUsuario(int iduser, String usuario, String fone, String login, String senha, String perfil) {
    this.iduser = iduser;
    this.usuario = usuario;
    this.fone = fone;
    this.login = login;
    this.senha = senha;
    this.perfil = perfil;
}



/**
 * @return the iduser
 */
public int getIduser() {
    return iduser;
}

/**
 * @param iduser the iduser to set
 */
public void setIduser(int iduser) {
    this.iduser = iduser;
}

/**
 * @return the usuario
 */
public String getUsuario() {
    return usuario;
}

/**
 * @param usuario the usuario to set
 */
public void setUsuario(String usuario) {
    this.usuario = usuario;
}

/**
 * @return the fone
 */
public String getFone() {
    return fone;
}

/**
 * @param fone the fone to set
 */
public void setFone(String fone) {
    this.fone = fone;
}

/**
 * @return the login
 */
public String getLogin() {
    return login;
}

/**
 * @param login the login to set
 */
public void setLogin(String login) {
    this.login = login;
}

/**
 * @return the senha
 */
public String getSenha() {
    return senha;
}

/**
 * @param senha the senha to set
 */
public void setSenha(String senha) {
    this.senha = senha;
}

/**
 * @return the perfil
 */
public String getPerfil() {
    return perfil;
}

/**
 * @param perfil the perfil to set
 */
public void setPerfil(String perfil) {
    this.perfil = perfil;
}

public void InserirUsuario(){
    String sql = "Insert into tbusuario(usuario,fone,login,senha,perfil)values(?,?,?,?,?)";
    try {
        pst = conn.prepareStatement(sql);
        pst.setString(1, this.getUsuario());
        pst.setString(2, this.getFone());
        pst.setString(3, this.getLogin());
        pst.setString(4, this.getSenha());
        pst.setString(5, this.getPerfil());
        int adicionado = pst.executeUpdate();
        if(adicionado > 0){
            JOptionPane.showMessageDialog(null, "Usuário adicionado com sucesso !!!");                
        }else{
            JOptionPane.showMessageDialog(null, "Erro: Ao adicionar usuário"); 
        }
    } catch (HeadlessException | SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro: Ao adicionar usuário " + e); 
    }
    
}

}

como assim controle?

Acho que vc esta misturando responsabilidades. Crie a classe Usuário para armazenar os dados, a classe PersistênciaDeUsuário (UsuárioDAO) para armazenar os usuários.

A classe Usuário seria como a classe String ou List, que poderia ser usado em qualquer parte da aplicação pois trata-se de uma estrutura de dados.

A classe PersistênciaDeUsuário seria um conjunto de tarefas (negócios) da aplicação. Este não teria relacionamento direto com a View, mas teria como um intermediário que seria o Controle.

A classe controle seria + ou -:

class Aplicação {
  PersistênciaDeUsuário persistênciaDeUsuário; // model
  CadastroDeUsuário cadastroDeUsuário; // view
  Aplicação {
    persistênciaDeUsuário = new;
    cadastroDeUsuário = new CadastroDeUsuário(this);
    cadastroDeUsuário.exibir();
  }
  void cadastrarUsuario(usuário) {
    persistênciaDeUsuário.persistir(usuário);
  }
}

class CadastroDeUsuário implements Formulário {
  Aplicação  aplicação;
  Botao botaoCadastrar;
  CadastroDeUsuário(controle) {
    aplicação = controle;
    botaoCadastrar.adicionarEvento( controle.cadastrarUsuario(new Usuário(obterLogin(), obterSenha())) );
    String obterLogin();
    String obterSenha();
  }
}
1 curtida

No momento sua implementação está passando longe do modelo MVC. O modelo MVC separa a aplicação em camadas com responsabilidade única. No seu caso vc tem uma entidade que sabe manipular o banco de dados.

Separe num arquivo a sua entidade:

public class ModeloUsuario {

	private int iduser;
	private String usuario;
	private String fone;
	private String login;
	private String senha;
	private String perfil;

	public ModeloUsuario() {
	}

	public ModeloUsuario(int iduser, String usuario, String fone, String login, String senha, String perfil) {
		this.iduser = iduser;
		this.usuario = usuario;
		this.fone = fone;
		this.login = login;
		this.senha = senha;
		this.perfil = perfil;
	}

	// GETTERS e SETTERS
}

Crie uma classe que saiba interpretar serviços, gerenciar recursos, regras de negócio:

class ModeloUsuarioService{

ModeloUsuarioDAO dao;

public void InserirUsuario(){
	dao = ModeloUsuarioDAO.getInstance();
	dao.InserirUsuario();
}

}

class ModeloUsuarioDAO{

public void InserirUsuario(){
String sql = "Insert into tbusuario(usuario,fone,login,senha,perfil)values(?,?,?,?,?)";
try {
    pst = conn.prepareStatement(sql);
    pst.setString(1, this.getUsuario());
    pst.setString(2, this.getFone());
    pst.setString(3, this.getLogin());
    pst.setString(4, this.getSenha());
    pst.setString(5, this.getPerfil());
    int adicionado = pst.executeUpdate();
    if(adicionado > 0){
        JOptionPane.showMessageDialog(null, "Usuário adicionado com sucesso !!!");                
    }else{
        JOptionPane.showMessageDialog(null, "Erro: Ao adicionar usuário"); 
    }
} catch (HeadlessException | SQLException e) {
    JOptionPane.showMessageDialog(null, "Erro: Ao adicionar usuário " + e); 
}

}

Veja que ainda não é o modelo ideal, mas está mais próximo de um MVC. Lembre-se que a função principal de um MVC é separ as responsabilidades em camdas. Minha entidade deve saber informaçoes sobre ela mesmo. Meu serviço deve saber as regras pra gerenciar uma entidade e seus recursos dependentes, o repositório deve saber como trabar com essa entidade no nível de banco de dados. Veja que cada camada tem o seu papel.

1 curtida

Mesmo se nao tiver usando Spring MVC, é só pra ter ideia do conceito.

Boa noite,
Agora quando clico no botão salvar aparece a “Erros Column ‘usuario’ cannot be null”, mas quando eu clico novamente ai da mensagem “usuario salvo com sucesso”, vou no banco conferir e ta la salvo.
Alguém ai sabe oque pode ser ?

Boa tarde,
Desculpa a insistência mas alguém poderia me ajudar nessa questão ?

Melhor criar outro tópico. Além de não der dado retorno pro esforço do pessoal que te quis te ajudar, agora o problema é outro.

Não dei retorno por que não consegui resolver do jeito que me pssaram, agradeço as pessoas que tentou me ajuda.
Já você esta se achando e querendo da lição de moral, se não quer ajudar fica quieto ai na sua.

Obrigado. Já te ajudei pro seu problema não ficar mofando ai.

Agradeço pela sua ajuda, mas não consegui entender com oque você me passou.
Sou agradecido por todos que tenta me ajudar.
Mas você veio querendo da lição de moral, como disse fica na sua.