JTable não carrega

Estou tentado puxar os dados do BD par listar na Jtable.
Consegui inserir via botão novo, mas não consigo listar os dados na Jtable

package com.login.view;

import com.login.dao.DaoUser;
import com.login.model.ModelUser;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;


public class FRMConsoleUser extends javax.swing.JFrame {
    DaoUser daoUser = new DaoUser();
    ModelUser modelUser = new ModelUser();
    /**
     * Creates new form FRMConsoleUser
     */
    public FRMConsoleUser() {
        initComponents();
         DefaultTableModel modelo = (DefaultTableModel) jTableLogin.getModel();
        jTableLogin.setRowSorter(new TableRowSorter(modelo));
       //https://www.youtube.com/watch?v=W5LsoFlwAWE&list=PLWd_VnthxxLfeEUK08gB7G3316OS5xIT3&index=14
        //readJTable();
    }
    
     public void readJTable() {
        DefaultTableModel modelo = (DefaultTableModel) jTableLogin.getModel();

        modelo.setNumRows(0);

        DaoUser du = new DaoUser();

        for (ModelUser tmp : du.read()) {

            modelo.addRow(new Object[]{
                tmp.getId(),
                tmp.getNome(),
                tmp.getLogin(),
                tmp.getSenha()

            });
        }

    }

package com.login.model;

public class ModelUser {
   
    private int id;
    
    private String nome;
    
    private String login;
    
    private String senha;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getSenha() {
        return senha;
    }

    public void setSenha(String senha) {
        this.senha = senha;
    }

    @Override
    public String toString() {
        return "ModelUser{" + "id=" + id + ", nome=" + nome + ", login=" + login + ", senha=" + senha + '}';
    }
    
}

package com.login.dao;

import com.login.model.ModelUser;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import com.login.dao.ConnectionFactory;

public class DaoUser {

    public void novo(ModelUser modelUser) {
        Connection con = ConnectionFactory.getConnnection();
        PreparedStatement stmt = null;

        String sql = "INSERT INTO db_login (nome, login, senha) VALUES (?, ?, ?) ";

        try {
            stmt = con.prepareStatement(sql);

            stmt.setString(1, modelUser.getNome());
            stmt.setString(2, modelUser.getLogin());
            stmt.setString(3, modelUser.getSenha());

            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, "Salvo com sucesso!");
            con.close();

        } catch (SQLException u) {
            throw new RuntimeException(u);
        } finally {
            ConnectionFactory.closeConnection(con, stmt);
        }
    }//fim inserir

    public void excluir(ModelUser modelUser) {
        Connection con = ConnectionFactory.getConnnection();
        PreparedStatement stmt = null;
        String sql = "DELETE FROM  db_login WHERE id=?";

        try {

            stmt = con.prepareStatement(sql);
            stmt.setInt(1, modelUser.getId());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, "Excluido com sucesso!");
            con.close();
        } catch (SQLException u) {
            throw new RuntimeException(u);
        }

    }// fim excluir

    public void alterar(ModelUser modelUser) {
        Connection con = ConnectionFactory.getConnnection();
        PreparedStatement stmt = null;
        String sql = "UPDATE db_login SET nome=?, login=?, senha=? WHERE id=? ";

        try {

            stmt = con.prepareStatement(sql);
            stmt.setString(1, modelUser.getNome());
            stmt.setString(2, modelUser.getLogin());
            stmt.setString(3, modelUser.getSenha());
            stmt.setInt(4, modelUser.getId());
            stmt.executeUpdate();
            JOptionPane.showMessageDialog(null, "Excluido com sucesso!");
            con.close();

        } catch (SQLException u) {
            throw new RuntimeException(u);
        } finally {
            ConnectionFactory.closeConnection(con, stmt);
        }
    }//fim alterar

    public List<ModelUser> read() {
        Connection con = ConnectionFactory.getConnnection();

        PreparedStatement stmt = null;

        ResultSet rs = null;

        List<ModelUser> modelUsers = new ArrayList<>();

        try {
            stmt = con.prepareStatement("SELECT * FROM db_login");
            rs = stmt.executeQuery();

            while (rs.next()) {
                ModelUser mUser = new ModelUser();

                mUser.setId(rs.getInt("id"));
                mUser.setNome(rs.getString("nome"));
                mUser.setLogin(rs.getString("login"));
                mUser.setSenha(rs.getString("senha"));

                modelUsers.add(mUser);

            }
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao ler lista\nErro :" + ex);
        } finally {                  
             ConnectionFactory.closeConnection(con, stmt, rs);
        }
        return modelUsers;
    }

    }//end DaoUser     

package com.login.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionFactory {

        private static final String DRIVER = "com.mysql.jdbc.Driver";
	private static final String URL = "jdbc:mysql://localhost:3306/db_login";
	private static final String USER = "root";
	private static final String PASS = "123";
	
    public static Connection getConnnection(){
        
        try {
            Class.forName(DRIVER);
            return DriverManager.getConnection(URL, USER, PASS);
            
        } catch (ClassNotFoundException | SQLException ex) {
            throw new RuntimeException("Erro na conexao: ",ex );
        }
    }
    
    public static void closeConnection(Connection con){
        
            try {
                if(con !=null){
                con.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
        
    }
    
    public static void closeConnection(Connection con, PreparedStatement stmt){
            closeConnection(con);
            try {
                if(stmt!=null){
                stmt.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
            }
    }   
    public static void closeConnection(Connection con, PreparedStatement stmt, ResultSet rs){
            closeConnection(con, stmt);
            try {
                if(rs!=null){
                rs.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(ConnectionFactory.class.getName()).log(Level.SEVERE, null, ex);
            }        
            
    }
}

Banco de Dados

####### MVCLogin ###################3
DROP DATABASE db_login;
CREATE DATABASE db_login;
USE db_login;


CREATE TABLE tbl_login(
id INT( 20 ) AUTO_INCREMENT,        
nome VARCHAR(255),
login VARCHAR(255),
senha VARCHAR(255),
PRIMARY KEY (id)
);

INSERT INTO tbl_login (nome, login, senha) VALUES ('marcel', 'adm_marcel','123');

DROP TABLE tbl_login;

SELECT * FROM tbl_login;

Erro:

primeira coisa, tá usando DefaultTableModel !! esqueçe isso por esse motivo TableModel ou DefaultTableModel , implanta seu proprio TableModel, vai ficar muita mais fácil a manutenção , olha aqui https://www.devmedia.com.br/implementando-seu-proprio-tablemodel/31865 .
boa sorte !

vou ver

é que eu gostaria de jogar a tabela no dao e na classe controle

@Marcel_Motta Fiz umas modificações para te dar um exemplo de como você pode preencher a tabela com dados, porém ainda te falta uma classe para realizar as ações condizentes com este formulário, espero que este código te ajude.

public class FRMConsoleUser extends javax.swing.JFrame {
private DaoUser daoUser;
private ModelUser modelUser;
private TableModelUser tbModel;

public FRMConsoleUser() {
    initComponents();
    montar();
}

private void montar(){
       daoUser = new DaoUser();
       modelUser = new ModelUser();
       tbModel = new TableModelUser(daoUser.getDadosUser());
       jTableLogin.setRowSorter(new TableRowSorter(tbModel));
       tabela.setModel(tbModel);
}

}

public class ModelUser {

private Long id;
private String nome;
private String login;
private String senha;

public ModelUser(){}

public ModelUser(Long id, String nome, String login, String senha){
        this.id = id;
        this.nome = nome;
        this.login = login;
        this.senha = senha;
}
    //Getters and Setters

}

public class TableModelUser extends AbstractTableModel {

private String[] columnNames;
private List<ModelUser> lista;

public TableModelUser(List<ModelUser> lista){
       this.lista = lista;
       columnNames = new String[]{"Id", "Nome", "Login", "Senha"};
}

@Override
public String getColumnName(int column) {
    return columnNames[column];
}

public void setColmunName(String... columnNames) {
    this.columnNames = columnNames;
}

@Override
public int getColumnCount() {
    return columnNames.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
    ModelUser user = lista.get(rowIndex);
    switch(columnIndex){
             case 0:
                   return user.getId().toString(); 
             case 1:
                   return user.getNome();
             case 2:
                   return user.getLogin();
             case 3:
                   return user.getSenha();
    }
    return null;
}

@Override
public Object setValueAt(Object aValue, int rowIndex, int columnIndex) {
    ModelUser user = lista.get(rowIndex);
    switch(columnIndex){
             case 0:
                   user.setId(Long.parseLong(aValue.toString())); 
                   break;
             case 1:
                   user.setNome(aValue.toString());
                   break;
             case 2:
                   user.setLogin(aValue.toString());
                   break;
             case 3:
                   user.setSenha(aValue.toString());
                   break;
    }
    return null;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
    return false;
}

}

public class DaoUser {

   public List<ModelUser> getDadosUser(){
         Connection con = ConnectionFactory.getConnnection();
         PreparedStatement stmt = con.prepareStatement(sql);
         ResultSet rst = stmt.executeQuery("SELECT * FROM db_login");
        List<ModelUser> lista = new ArrayList();
        while(rs.next()){
               ModelUser user = new ModelUser();
               user.setId(rs.getLong(0));
               user.setNome(rs.getString(1));
               user.setLogin(rs.getString(2));
               user.setSenha(rs.getString(3));
        }

        return lista;
   }

}