zoukankan      html  css  js  c++  java
  • 我的第一个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>
  • 相关阅读:
    (转)修改Android解锁界面
    linux terminal 快捷键
    (转)Android蓝牙开发浅析
    (转)android 编译单个模块
    (转)Android关机AppWidget的实现
    MyEclipse修改页面模板(JSP和HTML等) 分类: WEB项目应用 20100131 00:03 698人阅读 评论(1) 收藏
    定时任务:Timer类、TimerTask类 分类: java 20100317 22:01 551人阅读 评论(0) 收藏
    Socket读取输入流 分类: java 20100322 17:38 3330人阅读 评论(0) 收藏
    [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed. 分类: 开发常见问题解决方案 20100318 22:05 1106人阅读 评论(0) 收藏
    3/17/10 9:55:59 AM CST: [INFO] User settings file does not exist C:/Documents and Settings/Administrator/.m2/settings.xml 分类: 开发常见问题解决方案 20100317 10:20 3448人阅读 评论(4) 收藏
  • 原文地址:https://www.cnblogs.com/xiaweifeng/p/3714524.html
Copyright © 2011-2022 走看看