JDBC之MVC模式

package com.j1702.model;
//定义类
public class Student {

    private Integer id;
    private String name;
    private Integer age;
    private String address;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
package com.j1702.db;

import java.sql.*;

public class DBUtil {//创建工具类

    private static final String URL="jdbc:mysql://127.0.0.1:3306/jdbc_test";
    private static final String USER="root";
    private static final String PASSWORD="123456";
    //实例化一个链接对象conn
    private static Connection conn=null; 

    static{//静态方法块
        try {
            //1, 加载驱动程序
            Class.forName("com.mysql.jdbc.Driver");
            //2, 获得数据库链接对象 conn
            conn=DriverManager.getConnection(URL, USER, PASSWORD);//直接获得conn实例对象     或者用下面这种
            //setConn(DriverManager.getConnection(URL, USER, PASSWORD));//通过set方法获得conn实例对象
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConn() {
        return conn;
    }
    public static void setConn(Connection conn) {
        DBUtil.conn = conn;
    }
}
package com.j1702.dao;

import java.sql.*;
import java.util.*;

import com.j1702.db.DBUtil;
import com.j1702.model.Student;

public class StudentDao {

    //1、增
    public static void add(Student stu) throws Exception{
        //通过工具类,获取数据库链接对象
        Connection conn=DBUtil.getConn();
        //创建 sql 语句(?占坑)
        String sql="insert Student (name,age,address) values(?,?,?)";
        //创建欲加载的sql语句执行对象
        PreparedStatement ptmt=conn.prepareStatement(sql);
        //给名字赋值
        ptmt.setString(1,stu.getName());
        //给年龄赋值
        ptmt.setInt(2, stu.getAge());
        //给地址赋值
        ptmt.setString(3, stu.getAddress());
        //执行sql语句
        ptmt.execute();
    }
    //2、删
    public static void delete(Integer id) throws Exception{
        //通过工具类,获取数据库链接对象
                Connection conn=DBUtil.getConn();
                //创建 sql 语句(?占坑)
                String sql="delete from Student where id=?";
                //创建欲加载的sql语句执行对象
                PreparedStatement ptmt=conn.prepareStatement(sql);
                //给id赋值
                ptmt.setInt(1,id);
                //执行sql语句
                ptmt.execute();
    }
    //3、改
    public static void update(Student stu,Integer id) throws Exception{
                //通过工具类,获取数据库链接对象
                Connection conn=DBUtil.getConn();
                //创建 sql 语句(?占坑)
                String sql="update Student set name=?,age=?,address=? where id=?";
                //创建欲加载的sql语句执行对象
                PreparedStatement ptmt=conn.prepareStatement(sql);
                //给名字赋值
                ptmt.setString(1,stu.getName());
                //给年龄赋值
                ptmt.setInt(2, stu.getAge());
                //给地址赋值
                ptmt.setString(3, stu.getAddress());
                //给id赋值
                ptmt.setInt(4, id);
                //执行sql语句
                ptmt.execute();
    }
    //4、查所有
    public static void query() throws Exception{
            //通过工具类,获取数据库链接对象
            Connection conn=DBUtil.getConn();
            //创建 sql 语句(?占坑)
            String sql="select * from Student";
            //创建欲加载的sql语句执行对象(在只执行一句sql语句时使用该语句,需要循环执行sql语句时用另一种)
            Statement stmt=conn.createStatement();
            //用结果集ResultSet创建对象来接收sql语句返回的数据集
            ResultSet rs=stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.println("id:"+rs.getInt("id")+"\tname:"+rs.getString("name")+
            "\tage:"+rs.getInt("age")+"\taddress:"+rs.getString("address"));
            }
    }
    //5、查某个
    public static void queryWithId(Integer id) throws Exception{
        //通过工具类,获取数据库链接对象
        Connection conn=DBUtil.getConn();
        //创建 sql 语句(?占坑)
        String sql="select * from Student where id=?";
        //创建欲加载的sql语句执行对象
        PreparedStatement ptmt=conn.prepareStatement(sql);
        ptmt.setInt(1, id);
        ResultSet rs=ptmt.executeQuery();
        while (rs.next()) {
            System.out.println("id:"+rs.getInt("id")+"\tname:"+rs.getString("name")+
            "\tage:"+rs.getInt("age")+"\taddress:"+rs.getString("address"));
        }
    }
    //6、条件查询
    public static void queryWithParam(List<Map<String, Object>> param) throws Exception{
        Connection conn=DBUtil.getConn();//得到链接对象
        StringBuffer sql=new StringBuffer();
        sql.append("select * from Student where 1=1");
        for(Map<String, Object>map:param){
            sql.append(" and "+map.get("key")+" = ‘"+map.get("value") + "‘");
        }
        PreparedStatement ptmt=conn.prepareStatement(sql.toString());
        ResultSet rs=ptmt.executeQuery();
        while(rs.next()){
            System.out.println("id:"+rs.getInt("id")+"\tname:"+rs.getString("name")+
            "\tage:"+rs.getInt("age")+"\taddress:"+rs.getString("address"));
        }
    }
    //7、按包含某个字符查询
    public static void queryWithChar(List<Map<String, Object>> param) throws Exception{
        Connection conn=DBUtil.getConn();//得到链接对象
        StringBuffer sql=new StringBuffer();
        sql.append("select * from Student where 1=1");
        for(Map<String, Object>map:param){
            sql.append(" and "+map.get("key")+" like ‘%"+map.get("value") + "%‘");
        }
        PreparedStatement ptmt=conn.prepareStatement(sql.toString());
        ResultSet rs=ptmt.executeQuery();
        while(rs.next()){
            System.out.println("id:"+rs.getInt("id")+"\tname:"+rs.getString("name")+
            "\tage:"+rs.getInt("age")+"\taddress:"+rs.getString("address"));
        }
    }
}
package com.j1702.action;

import java.util.List;
import java.util.Map;

import com.j1702.dao.StudentDao;
import com.j1702.model.Student;
//这一层是Controller 层:是为view层和model层服务的
public class StudentAction {

    //向数据库中插入一条数据
    public static void insert(Student stu) throws Exception{
        StudentDao.add(stu);
    }
    //根据传入的id删除学生
    public static void delete(Integer id) throws Exception{
        StudentDao.delete(id);
    }
    //更新数据
    public static void update(Student stu,Integer id) throws Exception{
        StudentDao.update(stu,id);
    }
    //查找数据
    public static void find(List<Map<String, Object>> param) throws Exception{
        StudentDao.queryWithParam(param);
    }
    //按某个字符查询
    public static void findOfChar(List<Map<String, Object>> param) throws Exception{
        StudentDao.queryWithChar(param);
    }
    //查看详情
    public static void show() throws Exception{
        StudentDao.query();
    }
}
package com.j1702.view;
import java.util.*;
import com.j1702.model.Student;
import com.j1702.action.StudentAction;
//注意:以下例子并不完整,存在许多BUG和不合理之处。
public class TestView {
    public static void main(String[] args) throws Exception {

        //编程以终端为view层,实现数据的 增、删、改、查的操作
        /**
         * 请输入你要做的操作:A 添加,D 删除,U 更新,F 查询,exit 退出
         *
         * 请输入插入数据的name age address
         *
         * 请输入你要做的操作:A 添加,D 删除,U 更新,F 查询,exit 退出
         * */
        action();
    }
    public static void action() throws Exception{
        while(true){
            System.out.println("A 添加    D 删除    U 更新    F 查询    E 退出\n请选择您想要进行的操作:");
            Scanner scan0=new Scanner(System.in);
            String key0=scan0.next();
            //scan0.close();
            switch (key0) {
            case "A":
                Add();
                break;
            case "D":
                Del();
                break;
            case "U":
                UpDat();
                break;
            case "F":
                Find();
                break;
            case "E":
                return;
            default:
                System.out.println("对不起!没有你输入的选项,请重写输入!");
                break;
            }
        }
    }
    //添加学生
    public static void Add() throws Exception{
        Student stu=creatCode();
        StudentAction.insert(stu);
    }
    //删除学生
    public static void Del() throws Exception{
        System.out.println("请输入你要删除的学生的id号:");
        Scanner scan4=new Scanner(System.in);
        int id=scan4.nextInt();
        StudentAction.delete(id);
        scan4.close();
    }
    //替换学生
    public static void UpDat() throws Exception{
        Student stu=creatCode();//创建Student
        System.out.println("请输入你要修改的学生的id号:");
        Scanner scan5=new Scanner(System.in);
        int id=scan5.nextInt();
        StudentAction.update(stu, id);
        scan5.close();
    }
    //查找学生
    public static void Find() throws Exception{
        System.out.println("该数据库的字段有:id  name  age  address");
        List<Map<String, Object>> li=new ArrayList<Map<String,Object>>();
        a:
        while (true) {
            Map<String, Object> map=mp();
            li.add(map);
            b:
            while (true) {
                System.out.println("请选择:    1,继续输入查询条件     2,开始查询");
                Scanner scan8=new Scanner(System.in);
                int key2=scan8.nextInt();
                switch (key2) {
                case 1:
                    continue a;
                case 2:
                    break a;
                default:
                    System.out.println("对不起没有您输入的选项!请重新选择!");
                    continue b;
                }
            }
        }
        //StudentAction.find(li);//多条件查询
        StudentAction.findOfChar(li);//模糊多条件查询
    }
    //创建map对象
    public static Map<String, Object> mp(){
        Map<String,Object> map=new HashMap<String,Object>();
        System.out.println("请输入您想要查询的字段:");
        Scanner scan7=new Scanner(System.in);
        String key1=scan7.next();
        map.put("key",key1);

        System.out.println("请输入您想要查询字段中的值:");
        Scanner scan6=new Scanner(System.in);
        String input=scan6.next();
        if(key1.equals("age") | key1.equals("id")){
            Integer integer=Integer.parseInt(input);
            map.put("value", integer);
        }else if(key1.equals("name") | key1.equals("address")){
            map.put("value", input);
        }
        return map;
    }
    //创建新学生对象
     public static Student creatCode(){
        Student stu=new Student();
        System.out.println("请输入该学生的姓名:");
        Scanner scan1=new Scanner(System.in);
        String name=scan1.next();
        stu.setName(name);
        //scan1.close();
        System.out.println("请输入该学生的年龄:");
        Scanner scan2=new Scanner(System.in);
        int age=scan2.nextInt();
        stu.setAge(age);
        //scan2.close();
        System.out.println("请输入该学生的地址:");
        Scanner scan3=new Scanner(System.in);
        String address=scan3.next();
        stu.setAddress(address);
        //scan3.close();
        return stu;
    }
}
时间: 2024-10-11 00:07:32

JDBC之MVC模式的相关文章

JDBC - 开发实例 - MVC模式

JDBC - 开发实例 - MVC模式  1. 在web.xml中配置连接数据库的信息 web.xml: <context-param> <param-name>server</param-name> //主机名 <param-value>localhost</param-value> </context-param> <context-param> <param-name>db</param-name&

使用jdbc实现简单的mvc模式的增删改查

Mvc模式设计: 视图:添加界面(addUser.jsp),修改界面(updateUser.jsp),显示页面(allUser.jsp) 控制器:添加信息控制器(AddUserServlet),修改信息控制器(UpdateUserServlet),删除信息控制器(DeleteUserServlet),显示信息控制器(FindAllUserServlet) 模型:userbean 数据库层:DBBean 总体设计: 添加信息模块:用户通过添加信息界面(addUser.jsp)提交表单,提交的信息有

用户管理系统网站框架改进之MVC模式

从之前的用户管理系统中我们会发现,JSP主要是做界面的,但却用了JSP来对用户进行验证和分页处理,而Servlet处理页面的转跳是最快捷和最方便的,所以对用户管理系统的框架进行了改进,使用MVC模式. MVC是一种设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分为三个核心部件:模型.视图和控制器.它们各自处理自己的任务. MVC的各个字母分别是M(model模型).V(view视图)和C(controller控制器) M主要由Java class来处理,也可以是Jav

MVC模式

模式1把业务代码从JSP页面中分离了出去,减少了JSP的Java代码量,但在JSP页面中还有一些处理控制的Java代码.如果项目规模大,业务复杂,可能JSP中的处理控制的Java代码就会很杂乱.为了解决这个问题,可以把Servlet和 JSP结合起来,用Servlet接收用户提交的请求,调用业务方法,再转发给JSP页面显示结果 .以上所说的结构称为模式2. 模式2是一种MVC模式.MVC模式分为3层:业务层(Model)是进行业务处理的,表示层(View)是用来与用户交互的,控制层(Contro

作业七之MVC模式

1.什么是MVC MVC全名是Model View Controller,是模型-视图-控制器的缩写,MVC设计模式的思想就是把Web应用程序分为3个核心模块:模型(Model).视图(View)和控制器(Controller).这三个模块分别充当不同的角色,完成不同的任务.它们之间彼此又相互联系,构成一个结构分明而又高效的整体.MVC的结构如图所示. 在这个三角关系中,它们各自的功能如下所述. 模型:模型是Web程序中用于表示业务数据.进行业务逻辑操作的部分. 视图:视图是用户在Web浏览器中

学习模型-视图-控制器MVC模式

MVC简介: MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式.MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表). View(视图)显示数据(数据库记录). Controller(控制器)处理输入(写入数据库记录). MVC 模式同时提供了对 HTML.

基于jsp+servlet+javabean的MVC模式简单应用

原先写在CSDN的一篇,我直接扒过来吧.之前打算在CSDN的,结果写了几回,发现他那个发布系统简直烂到家,经常丢失图片各种.所以很长一段时间我也没写什么. 一.MVC模式 1.M :  javabean; 2.V :  jsp; 3.C : servlet; 4.DB:MySQL: 二.文件夹 三.项目内容 1.建立数据库并封装数据库操作 create database testDB; use testDB; create table user ( id int auto_increment p

MVC模式(Model View Controller)下实现数据库的连接,对数据的删,查操作

MVC模式(Model View Controller): Model:DAO模型 View:JSP  在页面上填写java代码实现显示 Controller:Servlet 重定向和请求的转发: 若目标的相应页面不需要从request里面读取任何信息,则可以使用重定向,可以防止表单重复提交: ------------------------------------------------------------------------------------------------ Stude

Struts(一)struts2.2概述与MVC模式深度剖析

struts2.2概述与MVC模式深度剖析 1.Struts2是由webwork与struts一起组成的.struts1与struts2完全不一样.(处理前段到服务器端的交互,也就是web端) 2.通过基于请求响应( Request-Response)模式的应用Framework, 基本上有如下几个表现逻辑结构组成.– 控制器(Controller) ——控制整个Framework中各个组件的协调工作.– 业务逻辑层(Business Logic) ——对Framework本身来说, 这里仅仅只