目录

JAVA三层结构

图解

步骤

文件结构:

代码

实体类:test

工具类:JDBCUtil

工具类:changeDate

view层

servlet层

service层——接口

service层——实现类

dao层——接口


JAVA三层结构

图解

javaee三层结构各层的类图 java三层架构怎么搭建_javaee三层结构各层的类图

步骤

主要用三层结构整合jdbc操作数据库

1.创建表
    创建数据库表
2. 编写实体类
    entity
        test——>将用户的数据封装
3. 编写jdbc连接工具类
    util
        changeDate——>字符串和日期相互转换
        JDBCUtil——>数据库工具类
4.编写三层结构【servlet——>service——>dao】
    1.  确定视图层的需求——>将用户的需求所需要的参数传递给servlet层

    2.  service层 的 接口定义需要实现的方法
        dao层 的 接口定义需要实现的方法

    3.  servlet目前不做操作,直接将值传递给service层
        service的实现类重写方法,编写sql语句,并将值传递给dao层
        dao层的实现类重写方法,执行sql语句

    4.  dao层将返回值传递会service层
        service层将返回值传递回servlet层
        servlet层将返回值传递回view(视图层)

    5.  view得到返回值进行判断,是否执行成功,并给用户反馈
5.编写测试类

文件结构:

javaee三层结构各层的类图 java三层架构怎么搭建_java_02

代码

实体类:test

package entity;
/*
实体类
属性封装
 */

import java.util.Date;

public class test {
    private int id;
    private String tname;
    private String sex;
    private int age;
    private Date birthday;

    public test(){}
    public test(String tname, String sex, int age, Date birthday) {
        this.tname = tname;
        this.sex = sex;
        this.age = age;
        this.birthday = birthday;
    }
    public test(int id, String tname, String sex, int age, Date birthday) {
        this.id = id;
        this.tname = tname;
        this.sex = sex;
        this.age = age;
        this.birthday = birthday;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTname() {
        return tname;
    }

    public void setTname(String tname) {
        this.tname = tname;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

工具类:JDBCUtil

package util;

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

/*
连接数据库的工具类
 */
public class JDBCUtil {
    public static Connection getcon(){
        Connection con = null;
        try {
            String url = "jdbc:mysql://localhost:3306/xt";
            //第一步:加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //第二步:创建连接
            con = DriverManager.getConnection(url, "root", "root");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return  con;
    }

}

工具类:changeDate

package util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/*
日期类型转换
 */
public class changeDate {
    public static String changed_s(Date d){
        SimpleDateFormat sf =new SimpleDateFormat("yyyy-MM-dd");
        String da =sf.format(d);
        return  da;
    }

    public static Date changed_d(String d){
        Date da=null;

        try {
            SimpleDateFormat sf =new SimpleDateFormat("yyyy-MM-dd");
            da =sf.parse(d);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return da;
    }
}

view层

package view;

import entity.test;
import servlet.TestServlet;
import util.changeDate;

import java.util.List;
import java.util.Scanner;

public class testView {
    Scanner scanner = new Scanner(System.in);
    public static void main(String[] args) {
        testView t1= new testView();
        t1.menu();
    }
    // 主菜单
    public void menu(){
        System.out.println("——————人员管理系统——————");
        System.out.println("\t1.——————添加");
        System.out.println("\t2.——————删除");
        System.out.println("\t3.——————修改");
        System.out.println("\t4.——————查询");
        System.out.println("\t5.——————退出");
        System.out.println("请选择:");
        int a = scanner.nextInt();

        switch (a){
            case 1:
                add();
                menu();
                break;
            case 2:
                delete();
                menu();
                break;
            case 3:
                update();
                menu();
                break;
            case 4:
                select();
                menu();
                break;
            case 5:
                System.out.println("Bye");
                break;
            default:
                break;
        }

    }

    //调用servlet层
    TestServlet ts = new TestServlet();

    private void add() {
        System.out.println("请输入添加的姓名:");
        String name = scanner.next();
        System.out.println("请输入性别:");
        String sex = scanner.next();
        System.out.println("请输入年龄:");
        int age = scanner.nextInt();
        System.out.println("请输入生日:");
        String birthData = scanner.next();

        // 将数据封装起来
        test t2 = new test(name,sex,age, changeDate.changed_d(birthData));
        int a= ts.addtest(t2);
        if (a>0){
            System.out.println("添加成功");
        }
    }

    private void delete() {
        System.out.println("请输入您想删除信息的名字");
        String name = scanner.next();

        test t2 =ts.selectOne(name);
        if (t2.getTname()!=null){
            System.out.println("找到了,接下来进行删除操作!");

            int a= ts.delTest(t2.getId());
            if (a>0){
                System.out.println("删除成功");
            }else {
                System.out.println("未知原因,删除失败!");
            }
        }else {
            System.out.println("未找到该名字,请确认名称是否输入正确!");
        }

    }
    // 修改
    private void update() {
        System.out.println("请输入您想修改的名字:");
        String name = scanner.next();

        test t2 =ts.selectOne(name);
        if (t2!=null){
            System.out.println("有这个名字的信息,接下来进行修改!");
            System.out.println("请输入新的名字");
            String newName = scanner.next();
            System.out.println("请输入新的性别");
            String newSex = scanner.next();
            System.out.println("请输入新的年龄");
            int newAge = scanner.nextInt();
            System.out.println("请输入新的生日");
            String newBirth = scanner.next();

            test t3 = new test(t2.getId(),newName,newSex,newAge,changeDate.changed_d(newBirth));
            int a = ts.updateTest(t3);
            if (a>0){
                System.out.println("修改成功!");
            }else {
                System.out.println("修改失败!");
            }
        }
    }
    // 查询
    private void select() {
        List<test> t3 = ts.selectAll();
        System.out.println("\t编号\t姓名\t性别\t年龄\t生日");
        for (int i = 0; i < t3.size(); i++) {
            test test4 = t3.get(i);
            System.out.println("\t"+test4.getId()+"\t"+test4.getTname()+"\t"+test4.getSex()+"\t"+test4.getAge()+"\t"+test4.getBirthday());
        }
    }
}

servlet层

package servlet;

import entity.test;
import service.TestService;
import service.impl.testServiceImpl;

import java.util.List;

public class TestServlet {

    TestService ts =new testServiceImpl();
    public int addtest(test t){

        // 目前不做操作,直接将t对象传给service层
        int a =ts.addtest(t);

        return a;
    }

    public test selectOne(String name ){
        test t2 = ts.selectOne(name);
        return t2;
    }
    public int delTest(int id){
        int a =ts.delTest(id);

        return a;
    }

    public List<test> selectAll(){

        return ts.selectAll();
    }

    public int  updateTest(test t){
        int a =ts.updateTest(t);
        return a;
    }
}

service层——接口

package service;

import entity.test;

import java.util.List;

public interface TestService {

    public int addtest(test t);

    public test selectOne(String name);
    public int delTest(int id);

    public List<test> selectAll();

    int updateTest(test t);
}

service层——实现类

package service.impl;

import dao.impl.testDaoImpl;
import dao.testDao;
import entity.test;
import service.TestService;
import util.changeDate;

import java.util.List;

public class testServiceImpl implements TestService {

    // 调用dao
    testDao td = new testDaoImpl();
    @Override
    public int addtest(test t) {
        //service 拿到 servlet 传过来的数据后,编写sql语句
        String add_sql = "insert into person (name ,sex,age,birth) values ('"+ t.getTname()+"','"+t.getSex()+"','"+t.getAge()+"','"+ changeDate.changed_s(t. getBirthday())+"')";
        // 把sql语句传递给dao
        int a =td.addtest(add_sql);
        return a;
    }

    @Override
    public test selectOne(String name) {
        String selectOne_sql = "select * from person where name='"+name+"'";
        test t2 =  td.selectOne(selectOne_sql);

        return t2;
    }

    @Override
    public int delTest(int id) {
        String del_sql = "delete from person where id='"+id+"'";
        int a =td.delTest(del_sql);
        return a;
    }

    @Override
    public List<test> selectAll() {
        String selectAll_sql="select * from person";
         List<test> tt = td.selectAll(selectAll_sql);
        return tt;
    }

    @Override
    public int updateTest(test t) {
        String update_sql ="update person set name = '"+t.getTname()+"',sex = '"+t.getSex()+"',age ='"+t.getAge()+"',birth = '"+changeDate.changed_s(t.getBirthday())+"'  where id='"+t.getId()+"' ";
        int a =td.delTest(update_sql);
        return a;
    }
}

dao层——接口

package dao;

import entity.test;

import java.util.List;

public interface testDao {
    // 添加
    int addtest(String sql);
    // 查找一个
    test selectOne(String sql);
    // 删除
    int delTest(String del_sql);
    // 查找全部
    List<test> selectAll(String sql);

}

dao层——实现类

package dao.impl;

import dao.testDao;
import entity.test;
import util.JDBCUtil;

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

public class testDaoImpl implements testDao {

    // 调用jdbc连接工具
    Connection con =null;
    Statement st =null;
    ResultSet re = null;

    @Override
    public int addtest(String sql) {

        // 执行sql语句
        int a = 0;
        try {
            con = JDBCUtil.getcon();
            st = con.createStatement();
            a = st.executeUpdate(sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if (con!=null){
                    con.close();
                }
                if (st!=null){
                    st.close();
                }
                if (re!=null){
                    re.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        return a;
    }

    public test selectOne(String sql){
    test t2 =null;

        try {
            con = JDBCUtil.getcon();
            st = con.createStatement();
            re = st.executeQuery(sql);
            if (re.next()){
                t2 = new test(re.getInt("id"),re.getString("name"),re.getString("sex"),re.getInt("age"),re.getDate("birth"));

            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if (con!=null){
                    con.close();
                }
                if (st!=null){
                    st.close();
                }
                if (re!=null){
                    re.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }


        return t2;
    }

    @Override
    public int delTest(String del_sql) {

        int a = 0;
        try {
            con = JDBCUtil.getcon();
            st = con.createStatement();
            a = st.executeUpdate(del_sql);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if (con!=null){
                    con.close();
                }
                if (st!=null){
                    st.close();
                }
                if (re!=null){
                    re.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        return a;
    }

    @Override
    public List<test> selectAll(String sql) {
        List<test> list =new ArrayList<>();

        try {
            con = JDBCUtil.getcon();
            st = con.createStatement();
            re = st.executeQuery(sql);
            while (re.next()){
                test t = new test(re.getInt("id"),re.getString("name"),re.getString("sex"),re.getInt("age"),re.getDate("birth"));
                list.add(t);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            try {
                if (con!=null){
                    con.close();
                }
                if (st!=null){
                    st.close();
                }
                if (re!=null){
                    re.close();
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

        return list;
    }

}