我的第一个MVC项目

这是本人第一个完全按照MVC开发模式完成的项目,非常简陋,仅仅完成的查询,保存,删除基本功能,而且存在编码问题没有解决,以后会慢慢增加功能。慢慢改进
imagepimageackage 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>

你可能感兴趣的:(mvc)