一个简单的MVC模式练习

简介:   控制层Action接受从模型层DAO传来的数据,显现在视图层上。     package Action; import java.sql.Connection; import java.

  控制层Action接受从模型层DAO传来的数据,显现在视图层上。

 

 

package Action;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

import DAO.StuDAO;
import Model.Student;
import Util.DBUtil;

public class StuAction {
    
    public static void main(String args[]) throws Exception {
            Connection conn = DBUtil.getConnection();
            Statement stmt = conn.createStatement();
//            ResultSet rs = stmt.executeQuery("select * from stuInfoTable");
    //
////            while(rs.next()) {
////                System.out.println(rs.getInt(1)+" "+ rs.getString(2)+" "+rs.getString(3));
////            }
            //不是直接 Student stu = null,这样试空指针
            Student stu = new Student();
            stu.setStuID(5);
            stu.setName("王五");
            stu.setSex("女");
            StuDAO sd = new StuDAO();
            //sd.addStu(stu);
            
//            stu.setName("马六");
//            stu.setSex("男");
//            sd.updateStu(stu);
            
            sd.delStu(stu.getStuID());
            
    }
    
    
    //直接调用StuDAO的方法来更新 增加 删除
    public void add(Student stu) throws Exception {
        StuDAO sd = new StuDAO();
        sd.addStu(stu);
    }
    //通过控制层来 链接视图层
}

 

package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import Model.Student;
import Util.DBUtil;

public class StuDAO {
    Connection conn = DBUtil.getConnection();
    //一个一个传参数很麻烦 直接传一个对象
    //如果stuID设置了自动递增  就不需要插入了
    public void  addStu(Student stu) throws Exception {
        String sql ="" + "insert into stuInfoTable" + "(" +
                " stuID,name,sex"+")" + "values(" + "?,?,?)";
        //这样的语句可以预加载在服务器里 execute后才会执行
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1, stu.getStuID());
        ps.setString(2, stu.getName());
        ps.setString(3, stu.getSex());
        ps.execute();
    }
    //和增加的逻辑一直  所以直接复制上述代码 然后修改sql语句
    //可以直接传过来stuID,但是这样需要根据ID去找Student
    public void updateStu(Student stu) throws Exception {
        //不加where语句的话 所有的都会更新
        
        //注意下面的语句   一定要有空格
        String sql ="" + "update stuInfoTable " + "set " +
                "name=?,sex=? " + "where "+ "stuID=?";
        //这样的语句可以预加载在服务器里 execute后才会执行
        PreparedStatement ps = conn.prepareStatement(sql);
        //打印出来sql语句 发现 中间少了 空格 然后修改上面的sql语句
        System.out.println(sql);
        //注意下面的 序号 要和update的序号一致
        ps.setString(1, stu.getName());
        ps.setString(2, stu.getSex());
        ps.setInt(3, stu.getStuID());
        ps.execute();
    }
    public void delStu(int stuID) throws Exception {
        
        String sql ="" + "delete stuInfoTable " +"where "+ "stuID=?";
        PreparedStatement ps = conn.prepareStatement(sql);
        ps.setInt(1, stuID);
        ps.execute();
    }
    //查询学生集合
    public List<Student> queryStu() throws Exception {
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select * from stuInfoTable");
        
        List<Student> stuList = new ArrayList<Student>();
        Student stu = null;
        while(rs.next()) {
            stu = new Student();
            stu.setStuID(rs.getInt(1));
            stu.setName(rs.getString(2));
            stu.setSex(rs.getString(3));
            stuList.add(stu);
        }
        return stuList;
    }
    //查询一个学生
    //应该需要和上面重载的 但是为了做实验 先写完所有方法 再去实现
    public Student queryOneStu() {
        return null;
    }

}
package Model;

public class Student {
    int stuID;
    String name;
    String sex;
    public int getStuID() {
        return stuID;
    }
    public void setStuID(int stuID) {
        this.stuID = stuID;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    

}
package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import DAO.StuDAO;
import Model.Student;

public class DBUtil {

    private static Connection conn;

    static {
        String url = "jdbc:sqlserver://localhost:1433;databasename=stuDB";

        try {
            // 1.注册驱动\
            // Class.forName("com.mysql.jdbc.Driver");
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            // 2.获得数据链接
            conn = DriverManager.getConnection(url, "sa", "123456");

        } catch (ClassNotFoundException | SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public static Connection getConnection() {
        return conn;
    }
}

 

目录
相关文章
|
设计模式 存储 前端开发
MVVM、MVC、MVP三种常见软件架构设计模式的区别
MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。
1736 12
|
设计模式 前端开发 JavaScript
浅谈MVC、MVP、MVVM框架模式
浅谈MVC、MVP、MVVM框架模式
217 0
|
前端开发 数据安全/隐私保护
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
588 0
|
设计模式 存储 前端开发
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的输入逻辑、业务逻辑和用户界面逻辑分离
【6月更文挑战第17天】**MVC模式**是软件设计模式,用于分离输入逻辑、业务逻辑和用户界面。模型处理数据和业务,视图展示数据,控制器协调两者响应用户请求。优点包括:关注点分离、提高开发效率、简化测试、支持多视图及便于大型项目管理。
421 3
|
设计模式 存储 前端开发
MVC(模型-视图-控制器)是一种在Web应用程序开发中广泛使用的软件设计模式
【5月更文挑战第12天】MVC模式是Web应用开发中的常见设计模式,将逻辑、数据和界面分离,提升代码可维护性和重用性。模型处理数据逻辑,视图展示数据,控制器协调用户输入与模型视图交互。优点包括代码分离、易维护、可扩展和组件重用,促进高效灵活的开发。
372 2
|
存储 前端开发 测试技术
MVC、MVP、MVVM 模式
MVC、MVP 和 MVVM 是三种常见的软件架构模式,用于分离用户界面和业务逻辑。MVC(Model-View-Controller)通过模型、视图和控制器分离数据、界面和控制逻辑;MVP(Model-View-Presenter)将控制逻辑移到 Presenter 中,减少视图的负担;MVVM(Model-View-ViewModel)通过数据绑定机制进一步解耦视图和模型,提高代码的可维护性和测试性。
|
设计模式 开发框架 前端开发
MVC 模式在 C# 中的应用
MVC(Model-View-Controller)模式是广泛应用于Web应用程序开发的设计模式,将应用分为模型(存储数据及逻辑)、视图(展示数据给用户)和控制器(处理用户输入并控制模型与视图交互)三部分,有助于管理复杂应用并提高代码可读性和维护性。在C#中,ASP.NET MVC框架常用于构建基于MVC模式的Web应用,通过定义模型、控制器和视图,实现结构清晰且易维护的应用程序。
370 2
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
前端开发 Java
【案例+源码】详解MVC框架模式及其应用
【案例+源码】详解MVC框架模式及其应用
1369 0
|
存储 前端开发 数据库
MVC模式和三层架构
MVC模式和三层架构