1.建项目 建Dao entity frame test util包(以下为效果图)
2.从Dao包开始(先写接口,在写个类实现)
接口:
public interface CdImpl {
//查询所有
public List<cd> SelectAll(String cname);
//id查询
public cd selectcid(int cid);
//修改
public int update(cd c);
//删除
public int delete(int cid);
}
接口实现类:
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.entity.cd;
import com.util.DBUtil;
public class CdDao implements CdImpl{
@Override
public List<cd> SelectAll(String cname) {
List<cd> list = new ArrayList<cd>();
Connection conn = DBUtil.getConnection();
String sql="";
try {
if(cname !=null){
sql ="select * from cd where cname like '%" + cname + "%'";
}else{
sql="select * from cd";
}
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
cd c = new cd();
c.setCid(rs.getInt("cid"));
c.setCname(rs.getString("cname"));
c.setCmoney(rs.getString("cmoney"));
c.setCtotal(rs.getString("ctotal"));
list.add(c);
}
} catch (Exception e) {
// TODO: handle exception
}
return list;
}
@Override
public cd selectcid(int cid) {
//select *from cd where cid = 2;
cd c = new cd();
Connection conn = DBUtil.getConnection();
String sql="select * from cd where cid = ?";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, cid);
ResultSet rs= ps.executeQuery();
while(rs.next()){
c.setCid(rs.getInt("cid"));
c.setCname(rs.getString("cname"));
c.setCmoney(rs.getString("cmoney"));
c.setCtotal(rs.getString("ctotal"));
}
} catch (Exception e) {
// TODO: handle exception
}
return c;
}
@Override
public int update(cd c) {
// 刷新
Connection conn = DBUtil.getConnection();
String sql="update cd set cname=?,cmoney=?,ctotal=? where cid=?";
int n=0;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, c.getCname());
ps.setString(2, c.getCmoney());
ps.setString(3, c.getCtotal());
ps.setInt(4, c.getCid());
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}
DBUtil.close(conn);
return n;
}
@Override
public int delete(int cid) {
// 删除
Connection conn =DBUtil.getConnection();
String sql="delete from cd where cid=?";
int n=0;
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, cid);
n=ps.executeUpdate();
} catch (Exception e) {
// TODO: handle exception
}
DBUtil.close(conn);
return n;
}
}
3 entity包
//菜单实体类
public class cd {
private int cid; //对应第一个
private String cname; //对应第二个
private String cmoney; //对应第三个
private String ctotal; //对应第四个
public cd() {
super();
}
public cd(int cid, String cname, String cmoney, String ctotal) {
super();
this.cid = cid;
this.cname = cname;
this.cmoney = cmoney;
this.ctotal = ctotal;
}
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getCmoney() {
return cmoney;
}
public void setCmoney(String cmoney) {
this.cmoney = cmoney;
}
public String getCtotal() {
return ctotal;
}
public void setCtotal(String ctotal) {
this.ctotal = ctotal;
}
@Override
public String toString() {
return "cd [cid=" + cid + ", cname=" + cname + ", cmoney=" + cmoney + ", ctotal=" + ctotal + "]";
}
}
4.frame包
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import java.util.Vector;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import com.Dao.CdDao;
import com.Dao.CdImpl;
import com.entity.cd;
public class Frame01 extends JFrame{
//布局为流式布局
JPanel jPanel = new JPanel();
JLabel jLabel = new JLabel("菜单");
//表单
JTable jTable = new JTable();
//设置表单格式
DefaultTableModel dtModel = new DefaultTableModel();
//设置滚动 分页
JScrollPane pane = new JScrollPane(jTable);
JPanel jPanel2 = new JPanel();
JTextField field = new JTextField(15);
JButton button1 = new JButton("查询");
JButton button2 = new JButton("退出");
JPanel jPanel3 = new JPanel();
JButton button = new JButton("修改");
JButton button3 = new JButton("删除");
CdImpl impl = new CdDao();
public void showTime(String cname) {
// TODO Auto-generated method stub
List<cd> cd = impl.SelectAll(cname);
int n=dtModel.getRowCount();
for (int i = 0; i < n; i++) {
dtModel.removeRow(0); //相当于刷新
}
for(cd c:cd){
Vector<Object> vector = new Vector<Object>();
vector.add(c.getCid());
vector.add(c.getCname());
vector.add(c.getCmoney());
vector.add(c.getCtotal());
dtModel.addRow(vector);
System.out.println(c);
}
}
public Frame01(){
this.setTitle("天价餐厅");
this.setSize(700, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jPanel.add(jLabel);
dtModel.addColumn("id");
dtModel.addColumn("菜名");
dtModel.addColumn("价格");
dtModel.addColumn("总量");
jTable.setModel(dtModel);
showTime("");
//查询
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String cname=field.getText();
showTime(cname);
}
});
//删除
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
int c = jTable.getSelectedRow();
System.out.println("第几行"+c);
String cid=jTable.getValueAt(c, 0).toString();
int n=impl.delete(Integer.parseInt(cid));
if(n>0){
JOptionPane.showMessageDialog(null, "删除成功");
showTime("");
}else{
JOptionPane.showMessageDialog(null, "删除失败");
}
}
});
//修改
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
int c = jTable.getSelectedRow();
System.out.println(c);
String cid =jTable.getValueAt(c, 0).toString();
new Update(cid, Frame01.this);
}
});
//退出
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0); //退出
}
});
jPanel2.add(field);
jPanel2.add(button1);
jPanel2.add(button2);
jPanel3.add(button);
jPanel3.add(button3);
this.getContentPane().add(jPanel, "North");
this.getContentPane().add(pane, "West");
this.getContentPane().add(jPanel3, "East");
this.getContentPane().add(jPanel2, "South");
this.setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Frame01();
}
}
4.1有更新按钮,需要弹窗修改,建Update 类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import com.Dao.CdDao;
import com.Dao.CdImpl;
import com.entity.cd;
public class Update extends JFrame{
JPanel jPanel = new JPanel();
JLabel jLabel=new JLabel("cid:");
JTextField field=new JTextField(15);
JLabel jLabel1=new JLabel("菜名:");
JTextField field1=new JTextField(15);
JLabel jLabel2=new JLabel("价格:");
JTextField field2=new JTextField(15);
JLabel jLabel3=new JLabel("总量:");
JTextField field3=new JTextField(15);
JButton button=new JButton("修改");
CdImpl cdImpl = new CdDao();
public Update(String cid,final Frame01 frame01){
this.setTitle("修改");
this.setSize(300, 500);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//加载数据
cd c = cdImpl.selectcid(Integer.parseInt(cid));
field.setText(c.getCid()+"");
field1.setText(c.getCname()+"");
field2.setText(c.getCmoney()+"");
field3.setText(c.getCtotal()+"");
jPanel.add(jLabel);
jPanel.add(field);
jPanel.add(jLabel1);
jPanel.add(field1);
jPanel.add(jLabel2);
jPanel.add(field2);
jPanel.add(jLabel3);
jPanel.add(field3);
jPanel.add(button);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
cd c = new cd();
String cid=field.getText();
String cname =field2.getText();
String cmoney =field3.getText();
String ctotal =field.getText();
c.setCid(Integer.parseInt(cid));
c.setCname(cname);
c.setCmoney(cmoney);
c.setCtotal(ctotal);
int n=cdImpl.update(c);
if(n>0){
JOptionPane.showMessageDialog(null, "修改成功");
Update.this.dispose();
frame01.showTime("");
}else{
JOptionPane.showMessageDialog(null, "修改失败");
}
}
});
this.add(jPanel);
this.setVisible(true);
}
}
5.Test包(测试Dao的方法有错没)
import java.util.List;
import org.junit.Test;//在项目里Build Path
import com.Dao.CdDao;
import com.Dao.CdImpl;
import com.entity.cd;
import com.util.DBUtil;
public class Demo {
@Test //出不来的原因是 import org.junit.Test; 的Test与类名相冲突
public void test01(){
System.out.println(DBUtil.getConnection());
}
//通过cid查询
@Test
public void test02(){
CdImpl cdImpl = new CdDao();
cd c =cdImpl.selectcid(2);
System.out.println(c);
}
@Test
public void test03(){
List<cd> list = new CdDao().SelectAll("");
System.out.println(list);
}
@Test
public void test04(){
CdImpl cdImpl = new CdDao();
int n=cdImpl.delete(2);
System.out.println(n);
}
@Test
public void test05(){
CdImpl cdImpl = new CdDao();
cd c = new cd();
c.setCid(3);
c.setCname("云吞");
c.setCmoney("14");
c.setCtotal("78");
int n=cdImpl.update(c);
System.out.println(n);
}
}
6.util包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBUtil {
static private Connection conn;
static private String driver="com.mysql.jdbc.Driver";
static private String url="jdbc:mysql://localhost:3306/mysql"; //首先 知道自个儿的表的地方
static private String user="root";
static private String password="root";
static{
try {
Class.forName(driver);
conn=DriverManager.getConnection(url, user, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//返回数据库连接池对象
public static Connection getConnection(){
return conn;
}
//关闭连接池
public static void close(Connection conn){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}