天天看点

【MyBatis】三层架构

文章目录

  • ​​三层架构和SSM框架的对应关系​​
  • ​​一、什么是框架?​​
  • ​​二、三层架构​​
  • ​​三、持久层技术解决方案​​
  • ​​四、Jdbc编程的分析​​
  • ​​主要回顾​​

三层架构和SSM框架的对应关系

一、什么是框架?

框架( Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。简而言之,框架其实就是某种应用的半成品,就是一组组件,供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。

通俗的讲,它是软件开发中的一套解决方案,不同的框架解决的是不同的问题。

* 使用框架的好处:

封装了很多的细节,使开发者可以使用极简的方式实现功能,大大提高开发效率~

​​返回顶部​​

二、三层架构

  • 表现层:展示数据
  • 业务层:处理业务需求
  • 持久层:与数据库交互
【MyBatis】三层架构

三层架构分为:表现层(UI)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)

1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。

·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。

2.数据访问层(DAL — dao层 ),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

·DAL就是根据业务需求,构造SQL语句,构造参数,调用帮助类,获取结果,DAL层被BIL层调用

3.业务逻辑层(BLL — service层)

·BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。

​​返回顶部​​

三、持久层技术解决方案

  • JDBC技术
  • Connection
  • PreparedStatement
  • ResultSet
  • Spring的JdbcTemplate
  • Spring中对jdbc的简单封装
  • Apache的DBUtils
  • 它和SpringJdbcTemplate很像,也是对jdbc的简单封装

以上这些都不是框架,JDBC是规范,Spring的JdbcTemplate和Apache的DBUtils都只是工具类

四、Jdbc编程的分析

主要回顾

public class dbHelper {

    // 添加数据库配置信息
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DATABASE_URL ="jdbc:mysql://localhost:3306/jdbc";
    static String username="root";
    static String password="123456";

    // 常用对象
    static Connection conn = null;
    static PreparedStatement preparedStatement = null;
    static Statement statement = null;
    static ResultSet resultSet = null;

    /**
     *  连接数据库
     */
    public static Connection getConn(){

        try {
            // 1.加载驱动
            Class.forName(JDBC_DRIVER);
            // 2.使用DriverManager创建连接
            conn  = DriverManager.getConnection(DATABASE_URL,username,password);
        } catch (Exception e){
            e.printStackTrace();
        }
        return conn;
    }
    
     /**
     *  进行查询
     */
    public static void select(String sql){
        try {
            getConn();
            // 通过conn创建statement,帮助执行sql语句
            statement = conn.createStatement();
            // 执行sql语句存入结果集
            resultSet = statement.executeQuery(sql);
            System.out.println(resultSet);
            // 输出查询结果
            System.out.println("id\t|name\t|sex\t|email\t\t\t|birthday");
            // 遍历结果集获取表记录
            while (resultSet.next()){
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String sex = resultSet.getString("sex");
                String email = resultSet.getString("email");
                Date birthday = resultSet.getDate("birthday");
                // 输出结果
                System.out.println(id+"\t|"+name+"\t|"+sex+"\t\t|"+email+"\t|"+birthday);
            }

        } catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     *  关闭资源
     */
    public static void close(){
        if (conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (preparedStatement!=null){
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (resultSet!=null){
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}