表格综合练习代码分析
父类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