java图形界面小练习-分页查询表格

这篇博客通过一个Java图形界面小练习,演示了如何实现分页查询表格功能。主要内容包括父类Item和ItemTableModel的设计,以及封装了数据库操作的副类ItemDAO,最后在主类TablePractice中进行整合应用。
摘要由CSDN通过智能技术生成

表格综合练习代码分析

父类Item和ItemTableModel

package collection;
import collection.Item;
import java.util.*;
public interface DAO {
   
        public void add(Item h);
        public void delete(int id);
        public Item get(int id);
        public  List<Item> list();
        public void update(Item h);
}
package collection;
import java.util.*;
public class Item {
   
	public int id;
     public String name;
     public int price;
   public static List<Item> Items=new ArrayList<>();
     public Item() {
   }
     public Item(String name) {
   
    	 this.name=name;
     }
     public String toString() {
   
    	 return String.format("[name:%s,price:%d]%n",name,price);
     }
     public Item(String name,int price) {
   
    	 this.name=name;
    	 this.price=price;
     }
     public static int testItem(Item o1,Item o2){
   
 		if(o1.price>=o2.price) return 1;
 		else return -1;
 	}
   
}
package gui;
import javax.swing.table.AbstractTableModel;
import collection.ItemDAO;
import collection.Item;
import java.util.*;
public class ItemTableModel extends AbstractTableModel{
   
	    String columnNames[]= new String[]{
   "id","name","price"};
	    public List<Item> items=new ItemDAO().list();

	    // 返回一共有多少行
         public int getRowCount() {
   
        	 return items.size();
         }
         public int getColumnCount() {
   
        	 return columnNames.length;
         }
         //获取每一列的名称
         public String getColumnName(int columnIndex) {
   
             // TODO Auto-generated method stub
             return columnNames[columnIndex];
         }

         // 单元格是否可以修改
         public boolean isCellEditable(int rowIndex, int columnIndex) {
   
             return false;
         }
         public Object getValueAt(int rowIndex,int columnIndex) {
   
        	 Item h=items.get(rowIndex);
        	 if(0==columnIndex)return h.id;
        	 if(1==columnIndex)return h.name;
        	 if(2==columnIndex)return h.price;
        	 return null;
         }
}

副类ItemDAO-数据库相关操作的封装类

package collection;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

public class ItemDAO implements DAO{
   
	public ItemDAO() {
   
	 try {
   
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
   
			e.printStackTrace();
		}
	}
	//返回数据库item的元素总数
	  public int getTotal() {
   
	        int total = 0;
	        try (Connection c =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
	                "root", "admin"); Statement s = c.createStatement();) {
   
	         //返回总数专用计数语句
	            String sql = "select count(*) from item";
	  
	            ResultSet rs = s.executeQuery(sql);
	            while (rs.next()) {
   
	                total = rs.getInt(1);
	            }
	  
	            System.out.println("total:" + total);
	  
	        } catch (SQLException e) {
   
	  
	            e.printStackTrace();
	        }
	        return total;
	    }
	    //往数据库插入类item
	 public void add(Item item) {
   
		 
	        String sql = "insert into item values(null,?,?)";
	        try (Connection c =  DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
	                "root", "admin"); PreparedStatement ps = c.prepareStatement(sql);) {
   
	            ps.setString(1, item.name);
	            ps.setInt(2, item.price);
	            ps.execute();
	            ResultSet rs = ps.getGeneratedKeys();
	            if (rs.next()) {
   
	                int id = rs.getInt(1);
	                item.id = id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值