• 使用SMM框架开发企业级应用-----初始MyBatis


    一、为什么学习框架技术

    优势如下:

    1、不用再考虑公共问题,框架已经帮我们做好了

    2、可以专心于业务逻辑,保证核心业务逻辑的开发质量

    3、结构统一,便于学习和维护

    4、框架中集成了前人的经验,可以帮助新手写出稳定、性能优良而且结构优美的高质量程序

    二、框架的概念

    框架(Framework)是一个可重用的公共结构的半成品,它为我们构建新的应用程序提供了极大的便利。一方面提供了可以拿来就用的工具,更重要的是,提供了可重用的设计

    三、主流框架的介绍

    Struts 2框架

    Struts2 以WebWork 优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁的基于MVC设计模式实现的Web应用程序框架。它应用了几个新的框架特性;从逻辑中分离出横切关注的拦截器,减少或者消除配置文件,贯穿整个框架的强大表达式语言,支持可变更和可重用的基于MVC模式的标签API等,Struts 2 充分利用了从其他MVC框架学到的经验和教训,使整个框架更加清晰更加灵活。

    Hibernate框架

    Hibernate是一个优秀的持久化框架,负责将对象数据保存到数据库中,或从数据库中读取数据并封装DAO对象的工作。Hibernate通过简单配置和编码即可替代JDBC烦琐的程序代码。Hibernate已经成为当前主流的数据库持久化框架,被广泛应用。

    Spring框架

    String是一个开源框架,他的目标是使现有的JavaEE技术更容易使用和促进良好的编程习惯。它是一个轻量级的框架,渗透了JavaEE技术的方方面面。他的主要作用作为依赖注入容器和AOP实现存在还提供了声明式事务,对DAO层的支持等简化开发的功能。String还可以很方便地与StringMVC、Struts、MyBatis、Hibernate等框架集成,其中大名鼎鼎的SSM集成框架指的就是基于StringMVC+String+MyBatis的技术框架,使用这个集成框架将使我们的应用程序更加健壮、稳固、轻巧和优雅,这也是当前最流行的Java技术框架

    SpringMVC

    StringMVC是String框架提供的构建Web应用程序的全功能MVC模块,属于StringFrameWork的后续产品,已经融合在String Web Flow 里面,是结构最清晰的MVC Model2的实现,并且拥有高度呃可配置性,支持多种视图技术。还可以进行定制化开发,相当灵活

    MaBatis框架

    MyBatis是一个优秀的数据库持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate,性能优秀,并且小巧

    数据持久化概念

    数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储类型可以是关系模型、XML、二进制流等。

    持久化是程序数据在瞬时状态和持久状态间转换的过程

    MyBatis框架及ORM

    1、MyBatis框架简介

    MyBatis有Batis是一个开源的数据持久化框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中实现SQL的灵活配置

    2、什么是ORM

    ORM(Object/Relational Mapping) 即对象关系映射,是一种数据持久化技术。它会在对象模型和数据库之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据

    基于SQL语法,简单易学

    能了解底层封装过程

    SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度

    方便程序代码调试

    3、MyBatis是ORM解决方案

    基于ORM,MyBatis在对象模型和数据库的表之间建立了一座桥梁,通过MyBatis建立SQL关系的映射,以便捷地实现数据存储、查询、更改和删除等操作

    MyBatis环境搭建

    1、下载mybatis-3.2.2.jar包并导入工程

    2、编写MyBatis核心配置文件(configuration.xml)

    3、创建实体类-SmbmsUser

    4、DAO层-SQL映射文件(mapper.xml)

    5、创建测试类

    6、读取核心配置文件mybatis-config.xml

    7、创建SqlSessionFactory对象,读取配置文件

    8、创建SqlSession对象

    9、调用mapper文件进行数据操作

    项目结构如图所示:

    pom.xml

     

    mybatis-config.xml——核心配置文件

     

    jdbc.properties  数据库接连的相关配置

    .

    ISmbmsUserDao.xml

     

    测试类

     

    MyBatis框架优缺点

    优点

    JDBC相比,减少了50%以上的代码量

    最简单的持久化框架,小巧并简单易学

    SQL代码从程序代码中彻底分离,可重用

    提供XML标签,支持编写动态SQL

    提供映射标签,支持对象与数据库的ORM字段映射

    缺点

    SQL语句编写工作量大,对开发人员有一定要求

    数据库移植性差

    MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目

    4.MyBatis基本要素

    01.MyBatis的核心对象  SqlSessionFactoryBuilder 、  SqlSessionFactory 、SqlSession

    02.mybatis-config.xml  系统核心配置文件

    03.mapper.xml  SQL映射文件

    心对象:

    1.SqlSessionFactoryBuilder用过即丢,其生命周期只存在于方法体内可重用其来创建多个 SqlSessionFactory 实例负责构建SqlSessionFactory,并提供多个build方法的重载

    2.SqlSessionFactory是每个MyBatis应用的核心

    作用:创建SqlSession实例

    作用域:Application

    生命周期与应用的生命周期相同

    单例

    存在于整个应用运行时,并且同时只存在一个对象实例

    3.SqlSession

    包含了执行SQL所需的所有方法

    对应一次数据库会话,会话结束必须关闭

    线程级别,不能共享

    mybatis-config.xml 系统核心配置文件

    configuration 配置

    properties可以配置在Java属性配置文件中

    settings修改MyBatis在运行时的行为方式

    typeAliases为Java类型命名一个别名(简称)

    typeHandlers 处理器

    objectFactory 对象工厂

    Plugins 插件ip: /blog, csdn.net/qq_36074113

    environments 环境

    environment环境变量

    transaction Ma nag er 事务管理器

    dataSource 数据源

    mappers映射器

    配置properties元素的两种方式
    1.通过外部指定的方式(database.properties),实现动态配置
    2.直接配置为xml,实现动态配置

    Setting元素

    用来修改MyBatis运行时的行为方式
    主要是MyBatis的一些全局配置属性的设置

    typeAliases元素

    类型别名
    仅仅只关联XML配置,简写冗长的Java类名

    //方式一

    <typeAliases>

    <typeAlias alias="User" type="chen.smbms.User"/>

    </typeAliases>

    //方式二:

    <typeAliases>

    <package name ="chen.smbms.pojo" />

    </typeAliases>

    MyBatis与Hibernate的区别

     

    struts2和springmvc的区别

    一、拦截机制的不同

      Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。

      SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。

      Struts2有自己的拦截Interceptor机制,SpringMVC这是用的是独立的Aop方式,这样导致Struts2的配置文件量还是比SpringMVC大。

    二、底层框架的不同

      Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC(DispatcherServlet)则采用Servlet实现。Filter在容器启动之后即初始化;服务停止以后坠毁,晚于Servlet。Servlet在是在调用时初始化,先于Filter调用,服务停止后销毁。

    三、性能方面

      Struts2是类级别的拦截,每次请求对应实例一个新的Action,需要加载所有的属性值注入,SpringMVC实现了零配置,由于SpringMVC基于方法的拦截,有加载一次单例模式bean注入。所以,SpringMVC开发效率和性能高于Struts2。

    四、配置方面

      spring MVC和Spring是无缝的。从这个项目的管理和安全上也比Struts2高。

     

    附注:拦截器与过滤器的区别:

     

    1、拦截器是基于java的反射机制的,而过滤器是基于函数回调。

    2、拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

    3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

    4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

    5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

  • 相关阅读:
    POJ 3630
    Codeforces Round #219 (Div. 2) D题
    Codeforces Round #232 (Div. 2) On Sum of Fractions
    Codeforces Round #232 (Div. 2) C
    撸呀撸的左手(KMP+DP)
    hdu poj KMP简单题目总结
    LCT总结
    bzoj1019 [SHOI2008]汉诺塔
    NOIP2016总结
    p1199八数码问题
  • 原文地址:https://www.cnblogs.com/haohanwuyin/p/11601896.html
Copyright © 2020-2023  润新知