Dúvida: criar lista usando marcação de checkbox como critério

Boa noite, pessoal!

Criei uma JTable com um campo Recebido. Como faço para os valores desta coluna apareçam em um checkbox, utilizando DefaultTableModel?

Minha outra dúvida em relação à checkbox, para este conteúdo ser salvo em um banco MYSQL, o tipo do dado pode ser VARCHAR?

Agradeço pela ajuda!

Minhas classes:
VendaDAO

package dao;

import conexao.CriaConexao;
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 modelos.DadosDaVenda;

/**
 *
 * @author marcus/+/LaraSoft/+/
 */
public class VendaDAO {

    // Inicia a conexão com o banco de dados
    private Connection conexao;

    // Construtor da classe VendaDao
    public VendaDAO() throws SQLException {
        this.conexao = CriaConexao.getConexao();
    }

    // Método que adiciona o contato ao banco de dados
    public void adiciona(DadosDaVenda v1) throws SQLException {
        // Prepara a conexão com o banco de dados
        String sql = "insert into controleRecarga(loja,data,hora,vendedor,valor,operadora,ddd,numeroCelular,recebido)"
                + "values(?,?,?,?,?,?,?,?,?)";
        PreparedStatement stmt = conexao.prepareStatement(sql);

        // Seta os valores a serem inseridos no banco de dados
        // stmt.setString(1, v1.getNdc());
        stmt.setString(1, v1.getLoja());
        stmt.setString(2, v1.getDia());
        stmt.setString(3, v1.getHora());
        stmt.setString(4, v1.getVendedor());
        stmt.setString(5, v1.getValor());
        stmt.setString(6, v1.getOperadora());
        stmt.setString(7, v1.getDdd());
        stmt.setString(8, v1.getNumeroCelular());
        stmt.setBoolean(9, v1.getRecebido());

        // Executa o código sql
        stmt.execute();
        stmt.close();
    }

    public List<DadosDaVenda> getLista() throws SQLException {
        String sql = "select * from controleRecarga where recebido like 0";
        PreparedStatement stmt = this.conexao.prepareStatement(sql);
        ResultSet rs = stmt.executeQuery();
        List<DadosDaVenda> listaVendas = new ArrayList<DadosDaVenda>();

        while (rs.next()) {
            DadosDaVenda dv = new DadosDaVenda();
            dv.setNdc(rs.getString("ndc"));
            dv.setDia(rs.getString("data"));
            dv.setHora(rs.getString("hora"));
            dv.setVendedor(rs.getString("vendedor"));
            dv.setValor(rs.getString("valor"));
            dv.setOperadora(rs.getString("operadora"));
            dv.setDdd(rs.getString("ddd"));
            dv.setNumeroCelular(rs.getString("numeroCelular"));
            dv.setRecebido(rs.getBoolean("recebido"));

            listaVendas.add(dv);
        }
        rs.close();
        stmt.close();

        return listaVendas;
    }
}

FormularioCaixa

package forms;

import dao.VendaDAO;
import java.sql.SQLException;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel;
import modelos.DadosDaVenda;

/**
 *
 * @author marcus
 */
public class FormularioCaixa extends javax.swing.JFrame {

    DefaultTableModel tmConferencia = new DefaultTableModel(null, new String []{"Ndc","Loja","Data","Hora","Vendedor","Valor","Operadora","DDD","Número do celular","Recebido"});
    List<DadosDaVenda> controleRecarga;
    ListSelectionModel lsmDadosDaVenda;

    /** Creates new form FormClaro */
    public FormularioCaixa() {
        initComponents();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jLabel7 = new javax.swing.JLabel();
        jTLoja = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jPanel2 = new javax.swing.JPanel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Recarga: Operadora Claro /+/LaraSoft/+/");

        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Dados da venda"));

        jTable1.setModel(tmConferencia);
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 703, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 103, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        jLabel7.setText("Loja:");

        jTLoja.setEditable(false);
        jTLoja.setText("2");
        jTLoja.setFocusable(false);
        jTLoja.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jTLojaActionPerformed(evt);
            }
        });

        jLabel1.setFont(new java.awt.Font("Ouhod-Bold", 0, 24)); // NOI18N
        jLabel1.setText("Conferência de recargas");

        jButton1.setText("Atualizar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(354, 354, 354)
                .addComponent(jButton1)
                .addContainerGap(289, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jButton1)
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addContainerGap()
                        .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap(651, Short.MAX_VALUE)
                        .addComponent(jLabel7)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTLoja, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(80, 80, 80))
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addGap(64, 64, 64))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 288, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(491, Short.MAX_VALUE)))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel7)
                    .addComponent(jTLoja, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(194, Short.MAX_VALUE)))
        );

        pack();
    }// </editor-fold>

    private void jTLojaActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
    }                                      

    protected void listarVendas() throws SQLException{
        VendaDAO dao = new VendaDAO();
        controleRecarga = dao.getLista();
        mostraPesquisa(controleRecarga);
    }

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        try {
        listarVendas();
        } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Não existem recargas de celular para serem confirmadas!");
    }
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new FormularioCaixa().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField jTLoja;
    private javax.swing.JTable jTable1;
    // End of variables declaration

    private void mostraPesquisa(List<DadosDaVenda> controleRecarga) {
        if(controleRecarga.size()==0){
            JOptionPane.showMessageDialog(null, "Não existem recargas de celular para confirmar!");
        }else{
            String[] linha = new String[]{null,null,null,null,null,null,null,null,null,};
            for (int i = 0; i < controleRecarga.size(); i++){
                tmConferencia.addRow(linha);
                tmConferencia.setValueAt(controleRecarga.get(i).getNdc(),i,0);
                tmConferencia.setValueAt(controleRecarga.get(i).getLoja(),i,1);
                tmConferencia.setValueAt(controleRecarga.get(i).getDia(),i,2);
                tmConferencia.setValueAt(controleRecarga.get(i).getHora(),i,3);
                tmConferencia.setValueAt(controleRecarga.get(i).getVendedor(),i,4);
                tmConferencia.setValueAt(controleRecarga.get(i).getValor(),i,5);
                tmConferencia.setValueAt(controleRecarga.get(i).getOperadora(),i,6);
                tmConferencia.setValueAt(controleRecarga.get(i).getDdd(),i,7);
                tmConferencia.setValueAt(controleRecarga.get(i).getNumeroCelular(),i,8);
            }
        }
        }
    }

Não use default table model.

Olá, amigo! Obrigado pela ajuda.

Sou iniciante, e o que poderia usar senão DefaultTableModel? Poderia me dar um exemplo com uma coluna com checkbox?

Abração. Valeu!