使用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的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次

原文地址:https://www.cnblogs.com/haohanwuyin/p/11601896.html