Java 如何使用hibernate删除/编辑JTable和MySQL中的行?

Java 如何使用hibernate删除/编辑JTable和MySQL中的行?,java,mysql,swing,hibernate,jtable,Java,Mysql,Swing,Hibernate,Jtable,我有一个JTable显示MYSQL数据库中表的内容。我还可以在我的JTable和数据库中添加记录。。编辑和删除操作只能在我的JTable中进行(更改不会显示到我的数据库中)。我想在我的按钮事件中添加hibernate代码,以便将更改显示到MySQL数据库中 任何帮助都将不胜感激 以下是相关课程: package com.hibernate.stock; import java.awt.BorderLayout; import java.awt.EventQueue; impo

我有一个JTable显示MYSQL数据库中表的内容。我还可以在我的JTable和数据库中添加记录。。编辑和删除操作只能在我的JTable中进行(更改不会显示到我的数据库中)。我想在我的按钮事件中添加hibernate代码,以便将更改显示到MySQL数据库中

任何帮助都将不胜感激

以下是相关课程:

  package com.hibernate.stock;

  import java.awt.BorderLayout;
  import java.awt.EventQueue;

  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.border.EmptyBorder;
  import javax.swing.table.DefaultTableModel;

  import java.awt.GridLayout;

  import javax.swing.JLabel;
  import javax.swing.JScrollPane;
  import javax.swing.JTextField;
  import javax.swing.JTable;
  import javax.swing.JButton;

  import org.hibernate.SQLQuery;
  import org.hibernate.Session;
  import org.hibernate.SessionFactory;
  import org.hibernate.Transaction;
  import org.hibernate.cfg.Configuration;

  import java.awt.event.ActionListener;
  import java.awt.event.ActionEvent;
  import java.util.ArrayList;
  import java.util.List;
  import java.awt.event.MouseAdapter;
  import java.awt.event.MouseEvent;

  public class Gestion extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTable table;
List biens;
int i;
PersistantBien bien = new PersistantBien();
final String columnNames[] = {"ID", "Nom", "Catégorie", "Quantité"};
final DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Gestion frame = new Gestion();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Gestion() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JLabel lblId = new JLabel("ID:");
    lblId.setBounds(12, 12, 70, 15);
    contentPane.add(lblId);

    JLabel lblNom = new JLabel("nom:");
    lblNom.setBounds(12, 39, 70, 15);
    contentPane.add(lblNom);

    JLabel lblCatgorie = new JLabel("catégorie:");
    lblCatgorie.setBounds(12, 69, 70, 15);
    contentPane.add(lblCatgorie);

    JLabel lblQuantit = new JLabel("quantité:");
    lblQuantit.setBounds(12, 108, 70, 15);
    contentPane.add(lblQuantit);

    textField = new JTextField();
    textField.setBounds(106, 10, 114, 19);
    contentPane.add(textField);
    textField.setColumns(10);

    textField_1 = new JTextField();
    textField_1.setBounds(106, 37, 114, 19);
    contentPane.add(textField_1);
    textField_1.setColumns(10);

    textField_2 = new JTextField();
    textField_2.setBounds(106, 67, 114, 19);
    contentPane.add(textField_2);
    textField_2.setColumns(10);

    textField_3 = new JTextField();
    textField_3.setBounds(106, 106, 114, 19);
    contentPane.add(textField_3);
    textField_3.setColumns(10);

    table = new JTable();
    table.setBounds(361, 50, 1, 1);
    contentPane.add(table);

    final JScrollPane tableScrollPane = new JScrollPane(table);
    tableScrollPane.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();
            textField.setText(tableModel.getValueAt(table.getSelectedRow(), 0).toString());
            textField_1.setText(tableModel.getValueAt(table.getSelectedRow(), 1).toString());
            textField_2.setText(tableModel.getValueAt(table.getSelectedRow(), 2).toString());
            textField_3.setText(tableModel.getValueAt(table.getSelectedRow(), 3).toString());
        }
    });
    tableScrollPane.setBounds(240, 11, 198, 135);
    contentPane.add(tableScrollPane);


    JButton btnAjouter = new JButton("Ajouter");
    btnAjouter.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();
            bien.setId_article(textField.getText());
            bien.setNom_article(textField_1.getText());
            bien.setCategorie(textField_2.getText());
            bien.setQuantite(textField_3.getText());

            s.save(bien);
            s.flush();
            tx.commit();
            s.close();

        }
    });
    btnAjouter.setBounds(12, 158, 117, 25);
    contentPane.add(btnAjouter);

    JButton btnEditer = new JButton("Editer");

    btnEditer.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();
            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();
            tableModel.setValueAt(textField.getText(), table.getSelectedRow(), 0);
            tableModel.setValueAt(textField_1.getText(), table.getSelectedRow(), 1);
            tableModel.setValueAt(textField_2.getText(), table.getSelectedRow(), 2);
            tableModel.setValueAt(textField_3.getText(), table.getSelectedRow(), 3);

            s.save(bien);
            s.flush();
            tx.commit();
            s.close();
        }


    });
    btnEditer.setBounds(150, 158, 117, 25);
    contentPane.add(btnEditer);

    JButton btnSupprimer = new JButton("supprimer");
    btnSupprimer.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();

            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();
            tableModel.removeRow(table.getSelectedRow());
            SQLQuery query=s.createSQLQuery("DELETE * FROM TBiens WHERE id-article='"+textField.getText()+"'");


            s.flush();
            tx.commit();
            s.close();

        }
    });
    btnSupprimer.setBounds(303, 158, 117, 25);
    contentPane.add(btnSupprimer);

    JButton btnAfficher = new JButton("Afficher");
    btnAfficher.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            try{
                Configuration cfg = new Configuration();
                cfg.configure("hibernate.cfg.xml");

                SessionFactory sf = cfg.buildSessionFactory();

                Session s = sf.openSession();

                Transaction tx = s.beginTransaction();
                SQLQuery query=s.createSQLQuery("select * from TBiens");
                biens = query.list();
                ArrayList<Object[]> res = new ArrayList<Object[]>(biens);


                final DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
                table.setModel(tableModel);
                for (final Object[] bien : res) {
                    // Assuming each row in the biens list is a list of strings...
                    final Object[] row = bien;
                    tableModel.addRow(row);

                }

                biens.size();
                System.out.print(i);
                s.flush();
                tx.commit();
                s.close();
            }
            catch (ClassCastException e) {
                e.printStackTrace();
            }

        }
    });
    btnAfficher.setBounds(166, 235, 117, 25);
    contentPane.add(btnAfficher);
}
package com.hibernate.stock;
导入java.awt.BorderLayout;
导入java.awt.EventQueue;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.border.EmptyBorder;
导入javax.swing.table.DefaultTableModel;
导入java.awt.GridLayout;
导入javax.swing.JLabel;
导入javax.swing.JScrollPane;
导入javax.swing.JTextField;
导入javax.swing.JTable;
导入javax.swing.JButton;
导入org.hibernate.SQLQuery;
导入org.hibernate.Session;
导入org.hibernate.SessionFactory;
导入org.hibernate.Transaction;
导入org.hibernate.cfg.Configuration;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入java.util.ArrayList;
导入java.util.List;
导入java.awt.event.MouseAdapter;
导入java.awt.event.MouseEvent;
公共类手势扩展JFrame{
私有JPanel内容窗格;
私有JTextField textField;
私有JTextField textField_1;
私有JTextField textField_2;
私有JTextField textField_3;
专用JTable表;
清单B;
int i;
PersistantBien bien=新的PersistantBien();
最终字符串列名[]={“ID”、“Nom”、“Catégorie”、“Quantité”};
final DefaultTableModel tableModel=新的DefaultTableModel(columnNames,0);
/**
*启动应用程序。
*/
公共静态void main(字符串[]args){
invokeLater(新的Runnable(){
公开募捐{
试一试{
手势框架=新手势();
frame.setVisible(true);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
/**
*创建框架。
*/
公共手势{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100450300);
contentPane=newjpanel();
setboorder(新的EmptyBorder(5,5,5,5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblId=新的JLabel(“ID:”);
lblId.立根(12,12,70,15);
contentPane.add(lblId);
JLabel lblNom=新JLabel(“nom:”);
lblNom.立根(12,39,70,15);
contentPane.add(lblNom);
JLabel lblCatgorie=新的JLabel(“catégorie:”);
lblCatgorie.立根(12,69,70,15);
contentPane.add(lblCatgorie);
JLabel lblQuantit=新JLabel(“quantité:”);
lblQuantit.立根(12,108,70,15);
contentPane.add(lblQuantit);
textField=新的JTextField();
textField.setBounds(106,10,114,19);
contentPane.add(textField);
textField.setColumns(10);
textField_1=新的JTextField();
textField_1.立根(106,37,114,19);
contentPane.add(textField_1);
textField_1.设置列(10);
textField_2=新的JTextField();
textField_2.立根(106,67,114,19);
contentPane.add(textField_2);
textField_2.设置列(10);
textField_3=新的JTextField();
textField_3.立根(106、106、114、19);
contentPane.add(textField_3);
textField_3.设置列(10);
table=新的JTable();
表1.立根(361,50,1,1);
contentPane.add(表);
最终JScrollPane表CRollPane=新JScrollPane(表);
tableScrollPane.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效mouseClicked(MouseEvent e){
DefaultTableModel tableModel=新的DefaultTableModel(columnNames,0);
tableModel=(DefaultTableModel)table.getModel();
textField.setText(tableModel.getValueAt(table.getSelectedRow(),0.toString());
textField_1.setText(tableModel.getValueAt(table.getSelectedRow(),1.toString());
textField_2.setText(tableModel.getValueAt(table.getSelectedRow(),2.toString());
textField_3.setText(tableModel.getValueAt(table.getSelectedRow(),3.toString());
}
});
表CrollPane.立根(240,11,198,135);
添加(tableScrollPane);
JButton btnAjouter=新的JButton(“Ajouter”);
添加ActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
Configuration cfg=新配置();
configure(“hibernate.cfg.xml”);
SessionFactory sf=cfg.buildSessionFactory();
会话s=sf.openSession();
事务tx=s.beginTransaction();
bien.setId_文章(textField.getText());
bien.setNom_文章(textField_1.getText());
bien.setCategorie(textField_2.getText());
bien.setQuantite(textField_3.getText());
s、 拯救(边);
s、 冲洗();
tx.commit();
s、 close();
}
});
btnAjouter.setBounds(12,158,117,25);
contentPane.add(btnAjouter);
JButton btnEditer=新JButton(“编辑器”);
addActionListener(新ActionListener()){
@凌驾
已执行的公共无效操作(操作事件arg0){
Configuration cfg=新配置();
configure(“hibernate.cfg.xml”);
SessionFactory sf=cfg.buildSessionFactory();
会话s=sf.openSession();
事务tx=s.beginTransaction();
DefaultTableModel tableModel=新的DefaultTableModel(columnNames,0);
tableModel=(DefaultTableModel)table.getModel();
tableModel.setValueAt(textField.getText(),table.getSelectedRow(),0);
tableModel.setValueAt(textField_1.getText(),table.getSelectedRow(),1);
tableModel.setValueAt(textField_2.getText(),table.getSelectedRow(),2);
tableModel.set
   package com.hibernate.stock;

   import java.awt.BorderLayout;
   import java.awt.EventQueue;

   import javax.swing.JFrame;
   import javax.swing.JPanel;
   import javax.swing.border.EmptyBorder;
   import javax.swing.table.DefaultTableModel;

   import java.awt.GridLayout;

   import javax.swing.JLabel;
   import javax.swing.JScrollPane;
   import javax.swing.JTextField;
   import javax.swing.JTable;
   import javax.swing.JButton;

   import org.hibernate.Query;
   import org.hibernate.SQLQuery;
   import org.hibernate.Session;
   import org.hibernate.SessionFactory;
   import org.hibernate.Transaction;
   import org.hibernate.cfg.Configuration;

   import java.awt.event.ActionListener;
   import java.awt.event.ActionEvent;
   import java.util.ArrayList;
   import java.util.List;
   import java.awt.event.MouseAdapter;
   import java.awt.event.MouseEvent;

   public class Gestion extends JFrame {

private JPanel contentPane;
private JTextField textField;
private JTextField textField_1;
private JTextField textField_2;
private JTextField textField_3;
private JTable table;
List biens;
int i;
PersistantBien bien = new PersistantBien();
final String columnNames[] = {"ID", "Nom", "Catégorie", "Quantité"};
final DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Gestion frame = new Gestion();
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the frame.
 */
public Gestion() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JLabel lblId = new JLabel("ID:");
    lblId.setBounds(12, 12, 70, 15);
    contentPane.add(lblId);

    JLabel lblNom = new JLabel("nom:");
    lblNom.setBounds(12, 39, 70, 15);
    contentPane.add(lblNom);

    JLabel lblCatgorie = new JLabel("catégorie:");
    lblCatgorie.setBounds(12, 69, 70, 15);
    contentPane.add(lblCatgorie);

    JLabel lblQuantit = new JLabel("quantité:");
    lblQuantit.setBounds(12, 108, 70, 15);
    contentPane.add(lblQuantit);

    textField = new JTextField();
    textField.setBounds(106, 10, 114, 19);
    contentPane.add(textField);
    textField.setColumns(10);

    textField_1 = new JTextField();
    textField_1.setBounds(106, 37, 114, 19);
    contentPane.add(textField_1);
    textField_1.setColumns(10);

    textField_2 = new JTextField();
    textField_2.setBounds(106, 67, 114, 19);
    contentPane.add(textField_2);
    textField_2.setColumns(10);

    textField_3 = new JTextField();
    textField_3.setBounds(106, 106, 114, 19);
    contentPane.add(textField_3);
    textField_3.setColumns(10);

    table = new JTable();
    table.setBounds(361, 50, 1, 1);
    contentPane.add(table);

    final JScrollPane tableScrollPane = new JScrollPane(table);
    tableScrollPane.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();
            textField.setText(tableModel.getValueAt(table.getSelectedRow(), 0).toString());
            textField_1.setText(tableModel.getValueAt(table.getSelectedRow(), 1).toString());
            textField_2.setText(tableModel.getValueAt(table.getSelectedRow(), 2).toString());
            textField_3.setText(tableModel.getValueAt(table.getSelectedRow(), 3).toString());
        }
    });
    tableScrollPane.setBounds(240, 11, 198, 135);
    contentPane.add(tableScrollPane);


    JButton btnAjouter = new JButton("Ajouter");
    btnAjouter.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {

            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();
            bien.setId_article(textField.getText());
            bien.setNom_article(textField_1.getText());
            bien.setCategorie(textField_2.getText());
            bien.setQuantite(textField_3.getText());

            s.save(bien);
            s.flush();
            tx.commit();
            s.close();

        }
    });
    btnAjouter.setBounds(12, 158, 117, 25);
    contentPane.add(btnAjouter);

    JButton btnEditer = new JButton("Editer");

    btnEditer.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();
            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();
            tableModel.setValueAt(textField.getText(), table.getSelectedRow(), 0);
            tableModel.setValueAt(textField_1.getText(), table.getSelectedRow(), 1);
            tableModel.setValueAt(textField_2.getText(), table.getSelectedRow(), 2);
            tableModel.setValueAt(textField_3.getText(), table.getSelectedRow(), 3);

            SQLQuery query=s.createSQLQuery("update TBiens "
                    + "set id_article='"+ table.getValueAt(table.getSelectedRow(),0) +"', "
                    + "nom_article= '"+ table.getValueAt(table.getSelectedRow(),1) +"', "
                    + "categorie= '"+ table.getValueAt(table.getSelectedRow(),2) +"' , "
                    + "quantite= '"+ table.getValueAt(table.getSelectedRow(),0) +"' "
                    + "where id_article = '"+ table.getValueAt(table.getSelectedRow(),0) +"'");


            query.executeUpdate();


            s.flush();
            tx.commit();
            s.close();
        }


    });
    btnEditer.setBounds(150, 158, 117, 25);
    contentPane.add(btnEditer);

    JButton btnSupprimer = new JButton("supprimer");
    btnSupprimer.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            Configuration cfg = new Configuration();
            cfg.configure("hibernate.cfg.xml");

            SessionFactory sf = cfg.buildSessionFactory();

            Session s = sf.openSession();

            Transaction tx = s.beginTransaction();

            DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
            tableModel = (DefaultTableModel) table.getModel();

            SQLQuery query=s.createSQLQuery("delete from TBiens where id_article = '"+ table.getValueAt(table.getSelectedRow(),0) +"'");
            query.executeUpdate();

            tableModel.removeRow(table.getSelectedRow());

            s.flush();
            tx.commit();
            s.close();

        }
    });
    btnSupprimer.setBounds(303, 158, 117, 25);
    contentPane.add(btnSupprimer);

    JButton btnAfficher = new JButton("Afficher");
    btnAfficher.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            try{
                Configuration cfg = new Configuration();
                cfg.configure("hibernate.cfg.xml");

                SessionFactory sf = cfg.buildSessionFactory();

                Session s = sf.openSession();

                Transaction tx = s.beginTransaction();
                SQLQuery query=s.createSQLQuery("select * from TBiens");
                biens = query.list();
                ArrayList<Object[]> res = new ArrayList<Object[]>(biens);


                final DefaultTableModel tableModel = new DefaultTableModel(columnNames, 0);
                table.setModel(tableModel);
                for (final Object[] bien : res) {
                    // Assuming each row in the biens list is a list of strings...
                    final Object[] row = bien;
                    tableModel.addRow(row);

                }

                biens.size();
                System.out.print(i);
                s.flush();
                tx.commit();
                s.close();
            }
            catch (ClassCastException e) {
                e.printStackTrace();
            }

        }
    });
    btnAfficher.setBounds(166, 235, 117, 25);
    contentPane.add(btnAfficher);
}
   }