认识框架

#SSM思维框架 专栏收录该内容
27 篇文章 0 订阅

什么是框架?

  • 框架就是一个架子,好比表演节目,别人给你搭好了舞台(框架),怎么表演表演什么节目看你自己的需求
  • 框架是一个半成品
  • 对于Java语言来说,框架就是别人代码的封装,我们在使用别人代码的基础上完成我们自己的功能,拿来主义。体现了代码的可复用性、可重用性

框架要解决什么样的问题?

  • 框架要解决的是基础代码的整合问题,因为软件复杂度越来越高,我们不可能把所有代码都从零进行开发,此时我们就需要一个优秀的框架整合基础代码。
  • 框架往往经过多年发展,安全性、性能、可扩展性等非常好

什么时候使用框架?

企业级项目(有一定的规模)开发(避免大炮打蚊子)

怎么用框架?

Java框架使用的共性

  • 就是一堆Jar包,导入jar包
  • 往往允许通过配置文件进行设置(xml)
  • 调用Jar包中的API使用框架

什么是分层?

分层其实就是把代码按照不同的功能放到不同的代码文件中,本质就是代码的拆分

  • Model1模式:Jsp+Javabean(jsp接收请求)
  • Model2模式(MVC)(servlet接收请求)

                                  M:model(service+dao)

                                  V:view(jsp页面视图)

                                  C:controller(serlvet)

经典三层

                                  表现层/视图层(jsp+servlet,view+Controller)

                                  服务层(service)

                                  Dao层(dao)

分层有什么好处?

解耦合、出现问题容易定位位置、维护代码方便

分层开发下的常见框架有哪些?

  • 表现层/视图层:struts2、springmvc
  • 服务层:spring
  • Dao层:hibernate、mybatis
  • SSH = sturts + spring + hibernate
  • SSM = spring + springmvc + mybatis

一个流行的框架一定有它流行的道理,原生的代码让人容易理解底层的结构和原理,但是在谈到一个能够当做企业级的项目的时候,框架的优越性就显现出来了。那么框架到底好到哪里了呢?

我们来拿JDBC的原声带吗来做分析,也为后面所介绍的Mybatis做一个铺垫:

package com.ujiuye.mybatis.dao;

import com.ujiuye.mybatis.pojo.User;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class UserDaoImpl implements UserDao {

    private String driver = "com.mysql.jdbc.Driver";
    private String url = "jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8";
    private String username = "root";
    private String password = "root";


    public List<User> queryUserList() throws Exception {
        List<User> userList = new ArrayList<User>();

        Class.forName(driver);
        /**
         * 问题一:频繁获取/释放数据库连接,影响数据库和应用性能
         * 解决:数据库连接池技术,C3P0,DRUID(阿里巴巴荣誉出品,号称前无古人后无来者世界最强没有之一)
         */
        Connection connection = DriverManager.getConnection(url, username, password);
        /**
         * 问题二:sql语句硬编码,后期难以维护
         * 解决:若sql语句和java代码分离,比如sql写在配置文件中。Mybatis就是这么干的
         */
        String sql = "select * from user";
        /**
         * 问题三:sql语句where条件和占位符一一对应,后期难以维护
         */
        // String sql1 = "select * from user where username=? and id=?";
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        // preparedStatement.setInt(1,2);
        ResultSet resultSet = preparedStatement.executeQuery();
        User user = null;
        /**
         * 问题四:结果集解析麻烦,查询列硬编码
         * 期望:如果单条记录直接返回实体对象,如果多条记录返回实体的集合
         */
        while(resultSet.next()) {
            user = new User();
            user.setId(resultSet.getInt("id"));
            user.setUsername(resultSet.getString("username"));
            user.setSex(resultSet.getString("sex"));
            user.setBirthday(resultSet.getDate("birthday"));
            user.setAddress(resultSet.getString("address"));

            userList.add(user);
        }
        resultSet.close();
        preparedStatement.close();
        connection.close();
        return userList;
    }
}

 

 

 

  • 6
    点赞
  • 0
    评论
  • 12
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏作者

好吃的都给你呀

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值