zoukankan      html  css  js  c++  java
  • 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")+"	name:"+rs.getString("name")+
                "	age:"+rs.getInt("age")+"	address:"+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")+"	name:"+rs.getString("name")+
                "	age:"+rs.getInt("age")+"	address:"+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")+"	name:"+rs.getString("name")+
                "	age:"+rs.getInt("age")+"	address:"+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")+"	name:"+rs.getString("name")+
                "	age:"+rs.getInt("age")+"	address:"+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 退出
    请选择您想要进行的操作:");
                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;
        }
    }
  • 相关阅读:
    性格-汉语-词语:坚忍
    汉语-词语:坚强
    品质-汉语-成语:坚持不懈
    was系统错误日志大量出现标识符缺失
    【iOS】UIWebView的HTML5扩展之canvas篇
    OA权限树搭建 代码
    linux下的环境文件设置说明
    怎样把多个Android Project打包成一个APK
    nyoj43 24 Point game(DFS)
    【西祠日志】【07】努力努力,找资料,思考,怎么做asp图片上传
  • 原文地址:https://www.cnblogs.com/Jfh389987366/p/7124029.html
Copyright © 2011-2022 走看看