我的第一个MVC项目

时间:2023-03-09 17:11:39
我的第一个MVC项目
这是本人第一个完全按照MVC开发模式完成的项目,非常简陋,仅仅完成的查询,保存,删除基本功能,而且存在编码问题没有解决,以后会慢慢增加功能。慢慢改进
我的第一个MVC项目p我的第一个MVC项目ackage com.sdjt.dao;

import java.util.ArrayList;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.junit.Test; import com.sdjt.utils.C3Utils; /**
* 实现操作增删改查
*
* @author lx
*
*/ public class PersonDaoJdb {
/*
* 实现查询
*/ public List<Object[]> query(String id, String name, Integer age, String sex) {
List<Object[]> list = new ArrayList<>();
try { String sql = "select p_id id,p_name name,p_age age,"
+ "(case sex when '1' then '男' else '女' end) sex"
+ " from person where 1=1"; List<Object> param = new ArrayList<>();
if (id != null && !id.trim().equals("")) {
sql += " and p_id like ?";
param.add("%" + id.trim() + "%");
}
if (name != null && !name.trim().equals("")) {
sql += " and p_name like ?";
param.add("%" + name.trim() + "%");
}
if (age != null) {
sql += " and p_age=?";
param.add(age);
}
if (sex != null && !sex.trim().equals("")) {
sql += " and sex=?";
param.add(sex.trim());
}
QueryRunner run = new QueryRunner(C3Utils.getDs()); list = run.query(sql, new ArrayListHandler(), param.toArray());
System.err.println("sql is:"+sql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
} /**
* 实现保存
*/ public void save(String id, String name,String age, String sex) { try { String sql = "insert into person values(?,?,?,?)";
QueryRunner run = new QueryRunner(C3Utils.getDs());
run.update(sql, id,name,age,sex); } catch (Exception e) {
e.printStackTrace();
} } public void delete(String id, String name,String age, String sex) { try {
String sql = "delete from person where ";
if (id != null && !id.trim().equals("")) {
sql += "p_id= ?";
QueryRunner run = new QueryRunner(C3Utils.getDs());
run.update(sql,id);
System.err.println("删除成功"); } else {
System.err.println("删除出错"); } } catch (Exception e) {
e.printStackTrace();
} } } package com.sdjt.frame; import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label; import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel; import com.sdjt.person.Action.PersonAction;
import com.sdjt.utils.MyModelFrame; public class Frame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L;
Label lable1 = new Label("编号");
Label lable2 = new Label("姓名");
Label lable3 = new Label("年龄");
Label lable4 = new Label("性别");
JButton save = new JButton("保存");
JButton delete = new JButton("删除");
JTextField idtext = new JTextField(5);
JTextField nametext = new JTextField(5);
JTextField agetext = new JTextField(5);
JTable table;
DefaultTableModel dt;
// 下拉框
JComboBox<String> sextext = new JComboBox<String>(new String[] { "", "男",
"女" }); public Frame() {
// 控制层 接受用户信息
PersonAction pa = new PersonAction(this);
// 获取当前jframe上的对象
Container con = getContentPane();
con.setLayout(new BorderLayout());
JPanel jp = new JPanel(new FlowLayout(FlowLayout.LEFT));
jp.add(lable1);
jp.add(idtext);
jp.add(lable2);
jp.add(nametext);
jp.add(lable3);
jp.add(agetext);
jp.add(lable4);
jp.add(sextext);
JButton query = new JButton("查询");
query.setActionCommand("query");
jp.add(query);
query.addActionListener(pa);
save.setActionCommand("save");
jp.add(save);
save.addActionListener(pa); delete.setActionCommand("delete");
jp.add(delete);
delete.addActionListener(pa); // 实例化表格数据+表头
dt = new MyModelFrame(null, new String[] { "编号", "name", "age", "sex" });
con.add(jp, BorderLayout.NORTH);
table = new JTable(dt);
// //设置单行选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 将t放在中间用JScrollPanel设置table可以带上下滚动条
con.add(new JScrollPane(table), BorderLayout.CENTER); // 监听窗口关闭按钮
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300, 300, 700, 300);
setVisible(true);
} public JTable getTable() {
return table;
} public JTextField getIdtext() {
return idtext;
} public JTextField getNametext() {
return nametext;
} public JTextField getAgetext() {
return agetext;
} public JComboBox<String> getSextext() {
return sextext;
} public static void main(String[] args) {
new Frame();
} public DefaultTableModel getDt() {
return dt;
} }
package com.sdjt.person.Action; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JOptionPane;
import com.sdjt.frame.Frame;
import com.sdjt.person.serverce.PersonServer; public class PersonAction implements ActionListener { // 声明serverce
private PersonServer service = new PersonServer();
private Frame fr; public PersonAction(Frame fr) {
this.fr = fr;
} @Override
public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("query")) { System.err.println("query..");
// 删除原有的
int rows = fr.getDt().getRowCount();
for (int i = 0; i < rows; i++) {
fr.getDt().removeRow(0); } // 查询
String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString(); if (sex.equals("男")) {
sex = "1"; } else if (sex.equals("女")) {
sex = "0"; } Integer _age = age.equals("") ? null : Integer.valueOf(age);
System.err.println(id + "," + name + "," + age + "," + sex); // 调用serverce // List<Object[]> list = service.query(id, name, _age, sex);
List<Object[]> list = service.query(id, name, _age, sex);
for (Object[] oo : list) {
fr.getDt().addRow(oo);
System.err.println("添加成功"); } } else if (e.getActionCommand().equals("save")) { // 获取数据
String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString();
if (id == null || id.trim().equals("")) {
JOptionPane.showMessageDialog(fr, "必须输入编号");
return;
}
if (sex == null || sex.trim().equals("")) {
JOptionPane.showMessageDialog(fr, "必须输入性别");
return;
}
// 调用保存 service.save(id, name, age, sex);
// 保存成功后
fr.getDt().addRow(new String[] { id, name, age, sex });
System.err.println("baocn"); } else if (e.getActionCommand().equals("delete")) {
// String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString();
int row = fr.getTable().getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(fr, "plz choose one row...");
return; }
String id1 = (String) fr.getDt().getValueAt(row, 0);
int a = JOptionPane.showConfirmDialog(fr, "你确定要删除" + id1 + "吗?",
"删除", JOptionPane.YES_NO_OPTION);
service.delete(id1, name, age, sex);
fr.getDt().addRow(new String[] { id1, "已经被删除" });
// System.err.println("--" + a);
// Integer _age = age.equals("") ? null : Integer.valueOf(age);
// List<Object[]> list = service.query(id1, name, _age, sex);
// for (Object[] oo : list) {
// fr.getDt().addRow(oo);
// System.err.println("添加成功");
//
// } } }
}
package com.sdjt.person.serverce; import java.util.List; import com.sdjt.dao.PersonDaoJdb; public class PersonServer { // 声明dao 注入dao
private PersonDaoJdb dao = new PersonDaoJdb(); public List<Object[]> query(String id, String name, Integer age, String sex) {
return dao.query(id, name, age, sex); } public void save(String id, String name, String age, String sex) { sex = sex.equals("男") ? "1" : "0";
dao.save(id, name, age, sex); } public void delete(String id, String name,String age, String sex) { dao.delete(id, name, age, sex); } }
package com.sdjt.utils; import java.sql.Connection; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3Utils {
private static DataSource ds;
static{
ds=new ComboPooledDataSource(); } public static DataSource getDs() {
return ds;
} public static Connection getCon() {
Connection con = null;
try { con = ds.getConnection(); } catch (Exception e) {
e.printStackTrace();
}
return con; }
// public static void main(String[] args) {
// System.err.println(C3Utils.getCon());
// } }
package com.sdjt.utils; import javax.swing.table.DefaultTableModel; /**
* 表格模版
*
* @author lx
*
*/
public class MyModelFrame extends DefaultTableModel { public MyModelFrame(Object[][] data, Object[] header) { super(data, header);
}
//返回false不能修改数据
@Override
public boolean isCellEditable(int row, int column) {
if(row==2){
return true; }
return false;
} }
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<!-- 最多可以创建多少个statement -->
<!-- 最多可以创建多少个statement -->
<property name="maxStatements">50</property>
<!-- 最多有多少个连接 -->
<property name="maxPoolSize">4</property>
<property name="initialPoolSize">2</property>
<property name="acquireIncrement">2</property>
<property name="minPoolSize">2</property>
<!-- 连接的超时间 -->
<property name="checkoutTimeout">3000</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///abc
</property>
<property name="user">root</property>
<property name="password">1234</property>
</default-config> <!-- 配置其他的连接,用户的其他配置可以有多个 --> <named-config name="jtedu"> <property name="maxStatements">50</property>
<!-- 最多有多少个连接 -->
<property name="maxPoolSize">4</property>
<property name="initialPoolSize">2</property>
<property name="acquireIncrement">2</property>
<property name="minPoolSize">2</property>
<!-- 连接的超时间 -->
<property name="checkoutTimeout">3000</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///abc
</property>
<property name="user">root</property>
<property name="password">1234</property>
</named-config>
</c3p0-config>