总结

我的未来我决定 提交于 2019-11-25 19:41:58

第一章 初始MyBatis

1.1.1 为什么学习框架技术使用ppt模板制作文档的优点如下: 1. 不用考虑布局,排版等问题,提高了效率。2. 可以专心于ppt内容,使演讲的质量更有保障。3. 新手也可以制作很专业的幻灯片演讲稿A1. 不用再考虑公共问题,框架已经帮我们做好了2. 可以专心于业务逻辑,保证核心业务逻辑的开发质量3. 结构统一,便于学习和维护4. 框架中集成了前人的经验,可以帮助新人写出稳定,性能优良而且结构优美的高质量程序。 1.1.2 框架概念框架是一个提高了可重用的公共结构的半成品。它为我们构建新的应用程序提供了极大的便利。一方面提供了可以拿来就用的工具,更重要的是提供了可重用的设计。 1.1.3 主流框架的介绍1. Struts 2 框架Struts 2以WebWork优秀的设计思想为核心,吸收了Struts框架的部分优点,提供了一个更加整洁 2. Hibernate框架 Hibernate 是一个优秀的持久化框架,负责简化将对象数据保存到数据库中,或从数据库中读取数据并封装到对象的工作。 3. Spring框架 Spring也是一个开源框架。它的目标是使现有的javaee技术更容易使用和促进良好的编程习惯 4. SpringMVC框架 SpringMVC是Spring框架提供的构建web应用程序的全功能MVC模块,属于SpringFramework的后续产品,已经融合在Spring Web Flow里面 ,是构架最清晰的MVC Model2 的实现。并且拥有高度的配置性 5. Mybatis框架 MyBatis 是一个优秀的数据持久化层框架,在实体类和sql语句之间建立映射关系,是一种半自动化的orm实现。其封装性要低于Hibernate,性能优秀,并小巧,简单易学,现在应用也越来越广泛。 1.1 MyBatis 介绍及其环境搭建 1.1.1 数据持久化概念数据持久化是将内存中的数据模型转换为存储类型模式,以及将存储模式转换为内存中的数据模式的统称。 1.1.2 Mybatis框架及orm1. MyBatis框架简介 MyBatis是一个开源的数据持久化层框架。它内部封装了通过jdbc访问数据库的操作,支持普通的sql查询,存储过程和高级映射,几乎消除了所有的jdbc代码和参数的手工设置以及结果集的检索。 2. 什么是orm Orm即对象/关系映射,是一种数据持久化技术。它在对象模型金和关系型数据之间建立起对应关系,并且提供了一种机制,通过javaBean对象去操作数据表中的数据 3. Mybatis是orm解决方案 基于orm,MyBatis在对象模型和关系数据库的表之间建立了一座桥梁,通过Mybatis建立sql关系映射,以便捷地实现数据储存,查询,更改和删除等操作 1.1.3 MyBatis 环境搭建1. 需要下载jar文件 2. 部署jar文件 3. 创建Mybatis核心配置文件configuration.xml 4. 创建持久化类(PoJO)和sql映射文件 5. 创建测试类 1.1.4 Mybatis框架的优缺点及其适用场合 1. Mybatis框架的优点 1. 与jdbc相比,减少了50%以上的代码量 2. Mybatis是最简单持久化框架,小巧并且简单易学 3. Mybatis相当灵活,不会对应用程序或者数据库的现有设计强加影响, 4. 提供xml标签,支持对象与数据库的orm字段的映射。 2. MyBatis框架的缺点 1. sql语句编写工作量较大,对开发人员编写sql语句的功底有一定要求 2,sql语句依据与数据库,导致数据库移植性差,不能随意更换数据库 2. MyBatis框架适用场合 Mybatis专注于sql本身,是一个足够灵活的dao层解决方案,对性能的要求很高,或者需要变化较多的项目,那么Mybatis将是不错的选择。 1.1.5 技能训练 1.2 Mybatis的基本要素–核心对象 Mybatis的三个基本要素 1. 核心接口和类 2. Mybatis核心配置文件 3. sql映射文件 1.2.1 SQLSessionFactoryBuilder 1. SQLSessionFactoryBuilder 的作用 由于字节流与字符流都属于读取配置文件的方式,所以从配置信息的来源就很容易构建一个sqlsessionfactory有两种方式 2. SQLSessionFactoryBuilder 的生命周期和作用域SQLSessionFactoryBuilder 的最大特点是:用过即丢,一旦创建了SQLSessionFactory对象后 ,这个类就不再存在了 1.2.2 SQLSessionFactory 1. SQLSessionFactory的作用 SQLSessionFactory简单的理解是创建SQLSession实例的工厂。 2. SQLSessionFactory的生命周期和作用域 SQLSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在。 1.2.3 SQLSession SQLSession是用于执行持久化操作的对象,类似于jdbc中的Connection。 SQLSession的生命周期和作用域 SQLSession对应着一次数据库会话,用于数据库会话不是永久的,因此SQLSession的生命周期也不应该是永久的。 SQLSession的两种使用方式 修改UserMapper.Xml文件,增加查询用户列表的select节点 1.2.4 技能训练 1.3 Mybatis的基本要素-核心配置文件 1.3.1 Mybatis-config.xml文件结构 1. properties元素 properties元素描述的都是外部化,可替代的属性。那么这些属性如何获取? 1. 可通过外部指定方式,即配置在典型的java属性配置文件中 2. 直接配置为xml,并使用这些属性对配置项实现动态配置 3. settings元素 Settings元素的作用是设置一些非常重要的设置选项,用于设置和改变Mybatis运行中的行动 4. typeAliases 元素 typeAliases元素的作用是配置类型别名,通过与Mybatis的sql映射文件相关联,减少输入多余完整类名,以简化操作。 5. environments元素 MyBatis可以配置多套运行环境,如开发环境,测试环境,生存环境等 6. mappers元素 Mappers:映射器,用来定义sql的映射语句,我们只需要告诉Mybatis去哪里找这些sql语句,即去哪里找相应的sql映射文件。 1.3.2 DTD文件的引入 1. dtd文件的位置 这两个dtd文件在mybatis-3.2.2.jar里,以压缩包形式解压并打开,dtd文件路径为mybatis-3.2.2\org\apache\ibatis\builder\xml, 2. 新增xml Catalog 1.3.3 技能训练

第二章 SQL映射文件

2.1 使用MyBatis实现条件查询 2.1.1 SQL 映射文件SQL映射文件的几个顶级元素配置: Mapper映射文件的根元素节点,只有一个属性namespace其作用如下用于区分不同的mapper,全局唯一绑定dao接口,即面向接口编程,当namespace绑定某一接口之后,可以不用写该接 口的实现类,MyBatis会通过接口的完整限定名查找到对应的mapper配置来执行SQL 语句。Cache 配置给定命名空间的缓存Cache-ref 从其他命名空间引用缓存配置ResultMap 用来描述数据库结果集合对象的对应关系Sql 可以重用SQL块,也可以被其他语句引用Insert 映射插入语句Update 映射更新语句Delete 映射删除语句Select 映射查询语句 2.1.2 使用select 完成单条件查询与查询对应的select元素是使用Mybatis时最常用的元素。 Select 元素的属性和Mybatis配置文件的属性 Id:命名空间中唯一的标识符,可以被用来引用这条语句 ParameterType 表示查询语句传入参数的类型的完全限定名或别名。 2.1.3 使用select完成多条件查询ParameterType 支持的复杂数据类型除了JavaBean之外,还包括Map类型,这种做法更加灵活,不管是什么类型的参数,或者多个参数,我们都可以把它封装成Map数据结构进行入参,通过map的key即可获取传入的值。 2.1.4 使用resultMap完成查询结构的展示有两种解决方案,简单介绍并分析如下 1. 修改POJO 使用resultType做自动映射2. 通过resultmap来映射自定义结果 1. resultType 直接表示返回类型,包括基础数据类型和复杂数据类型2. resultMap 则对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上。3. resultType和resultMap的关联在Mybatis的select 元素中,resultType和resultMap本质上是一样的,都是Map数据结构。单需要明确一点,resultType属性和resultMap属性绝对不能同时存在,只能二者选其一使用 2.1.5 技能训练 2.2 使用MyBatis 实现增删改操作 2.2.1 使用insert 完成增加操作Mybatis实现增加操作,使用的是insert元素来映射插入语句。 Insert元素的属性 Id 与select元素的id一样,是命名空间中唯一的标识符,可以被用来引用这条语句。 parameterType 与select 元素的parameterType一样,是传入参数的类型的完全限定名或别名。 Insert、update、delete元素中钧没有resultType属性,只有查询操作需要对返回结果类型进行相应的指定。 2.2.2 使用update完成修改操作Update元素的属性 id和parameterType的含义和用法等同于insert元素中的属性用法,另外,用于是修改操作,因此更新的字段中须更新modifyBy和modifyDate,而不需要更新createBy和creationDate。 2.2.3 使用@Param注解实现多参数入参使用注解@param类传入多个参数,如@Param(“userPassword”) String pwd ,相当于将该参数pwd重命名为userPassword ,在映射sql中需要使用#{注解名称} 2.2.4 使用dalete完删除操作 参数 delld,使用@param注解来指定参数名为id,返回值为int类型,即返回执行sql影响的行数 2.2. 5 技能训练 2.3 用resultMap实现高级结果映射 2.3.1 resultMap 实现高级结果映射1. 属性id :resultMap的唯一标识 Type:表示该resultMap的映射结果类型 2. 子节点Id:一般对应数据库中该行的主键id,设置此项可以提升Mybatis性能 Result 映射到javaBean 的某个简单类型的属性,如基础数据类型,包装类等。 2.3.2 Association Association 映射到JavaBean 的某个复杂类型 属性,比如JavaBean类,即JavaBean内部嵌套一个复杂数据类型属性,这种情况就属于复杂类型的关联。 Associate的属性 JavaType 完整java类名或者别名。映射到一个JavaBean,则Mybatis通过会自行检测到其类型; Property映射数据库列的实体对象的属性, Id Result Property 映射数据库列的实体对象的属性Column 数据库列名或别名 2.3.3 collect collection元素的作用和associate元素的作用差不多一样,事实上,它们非常类似,也是映射到JavaBean的某复杂类型属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型属性。 2.3.4 技能训练 2.4 resultMap自动映射级别和Mybatis缓存 2.4.1resultMap自动映射级别 Mybatis和resultMap自动映射的三个匹配级别 None 禁止自动匹配 Partlal 自动匹配所有属性,有内部嵌套的除外 Full 自动匹配所有 2.4.2 Mybatis 缓存 1. 一级缓存一级缓存是基于perpetCache的HashMap本地缓存,作用范围为session域内,当session flush或close之后,该session中所有的cache就会被清空2. 二级缓存二级缓存就是global caching 它超出session范围之外,可以被所有sqlsession共享,开启它只需要在Mybatis的核心配置文件settings中设置即可。 3.二级缓存的配置 Mybatis的全局cache配置,需要在Mybatis-config.xml的settings中配置 在mapper文件中设置缓存,默认情况下是没有开启缓存的

第三章 动态SQL

3.1 使用动态sql完成多条件查询 实现动态sql语句的元素如下: if 利用if实现简单的条件查询 Choose 相当于java中的switch语句,通过与when和otherwise搭配 Where 简化sql语句中的where语句条件判断 Set 解决动态更新语句 Trim 可以灵活地去除多余的关键字 Forech 迭代一个集合,通常用于in条件
3.1.1 使用if+where 实现多条件查询 1. If 利用if元素实现简单的条件判断,if元素的test属性表示进入if内需要满足的条件。整个sql语句非常简。
2. where Where 元素主要用于简化sql语句中的where 条件判断,并能智能地处理and和or,不必担心多余字段导致的语法错误。 3.1.2 技能训练 3.1.3 使用if+trim实现多条件查询 Trim元素也会也会自动设别其标签内是否有返回值,若有返回值,会在自己包含的内容前加上某些前缀,也可以在其后加入某些前缀,与之对应的属性是prefix和suffix;也可以摆把包含的首部某些内容覆盖,或者把尾部的某些内容覆盖,与子之对应的属性是prefixOverride和suffixOverride; 3.2 使用动态sql实现更新操作 3.2.1 使用if+set改造更新操作 Set元素主要用于更新操作,它的主要功能和where元素差不多,主要是在包含的语句前输出一个set,若包含的语句是以逗号结束的,会自动把该逗号忽略掉,再配合if元素就可以实现动态地更新需要修改的字段;而不需要修改的字段,则可以不再被更新。 3.2.2 技能训练 3.2.3 使用if+trim改造修改操作 我们也可以使用trim元素lai替换set元素,并实现与set一样效果,接下来就改造上一个示例来实现用户表的修改操作。 3.2.4 技能训练 3.3 使用foreach 完成复杂查询3.3.1 Mybatis入参为数组类型的foreach迭代 Foreach主要用于构建in条件中,它可以在sql语句中迭代一个集合。它的属性主要有:item、index、collection、separator、close、open 首先修改UserMapper.java,增加接口方法,根据传入的用户角色列表获取该角色列表下的用户信息,参数为角色列表,该参数类型为整数数组。 3.3.2 MyBatis入参为List 类型的foreach迭代 修改UserMapper.java,增加接口方法,参数为角色列表,该参数类型为List Foreach元素非常强大,允许我们指定一个集合,并指定开始和结束的字符,也可以加入一个分隔符到迭代器,并能够智能处理该分隔符,不会出现多余的分隔符。 3.3.3 技能训练 3.3.4 MyBatis入参为Map类型的foreach迭代 除了使用之前章节介绍的@Param注解,还可以按照前文介绍collection属性的时候,提过的第三种情况.若入参为多个参数,就需要把它们封装一个Map进行处理。 3.3.5 技能训练 3.3.6 choose(when,otherwise) choose元素的作用相当于java中的switch语句,基本上跟JSTL中choose的作用和用法是一样的,通常都是搭配when,otherwise使用。 When元素;当其test属性中满足的时候,就会输出when元素中的内容。跟Java中switch效果差不多的同样按照条件的顺序来进行处理,并当when中一旦有条件满足的时候,就会跳出choose,即所有的when和otherwise条件中,只有一个条件会输出。 3.3.7 技能训练 3.4MyBatis实现分页功能 3.4.1 MyBatis分页 MySQL的分页功能是基于内存的分页,即查出来所有记录,再按起始位置和页面内容取出结果。 具体dao层的实现步骤如下

  1. 使用聚合函数count()获取总记录数代码如下 userMapper.java Public int count(); 2. 实现分页,通过limit。 修改UserMapper.java,增加分页方法 3.4.2 技能训练

第五章Spring核心概念

5.1 初识Spring 5.1.1 企业及应用开发 Spring致力于javaee应用的各种解决方案,而不是仅仅专注于某一层的方案。 可以说,Spring是企业应用开发的一站式选择,Spring贯穿表现层,业务层,持久层。 5.1.2 Spring的绿草丛 Spring是一个全面的解决方案,二是促进良好的编程习惯,但他坚持一个原则:不重复发明轮子,已经有较好的解决方案的领域,Spring绝不做重复性的实现。 5.2 Spring Ioc 5.2.1 理解“控制反转” 控制反转,也称为依赖注入,是面向对象编程中的一种设计理念,用来降低程序代码之间的耦合度 在解决问题过程中,大量的工厂类会被引入开发过程中,明显增加了开发的工作量。而Spring能够替我们分担这些额外的工作,为我们提供完整的IoC实现,让我们得以专注业务类和Dao设计 5.2.2 Hello,Spring 实现思路 1. 下载Spring并添加到项目 2. 编写Spring配置文件 3. 编写代码通过Spring获取helloSPring实例 文件结构 docs 该文件夹下包含Spring的相关文档,包括APL参考文档,开发手册 Libs 该文件夹下存放Spring各个模板的jar文件,每个模板钧提供三项内容:开发所需的jar文件,以-javadoc后缀表示APL和以-soures 后缀表示的源文件。 Schema 配置Spring的某些功能需用到schema文件,对于已经集成了Spring的IDE环境,这些文件不需要专业导入。 5.2.3 技能训练 5.2.4 如何使用“依赖注入” 软件设计与此类似,由于明确地定义了接口,在编程代码的时候,完全不用考虑和某和具体实现类的依赖关系,从而使我们获取了构建更复杂系统的能力。 组件间的依赖关系和接口的重要性在将各个组件组装在一起的时候得以体现。 5.2.5技能训练 5.3 Spring AOP 5.3.1 理解面向切面编程 面向切面编程是软件编程思想发展到一定阶段的产物,是对面向对象编程的有益补充。 AOP一般适用于具有横切逻辑的场合,如访问控制,事务管理,性能监测。 在业务系统中,总有一些散落,参透到系统各处且不得不处理的事情,这些插穿在即定业务中的操作就是所谓的横切逻辑,也称为切面 对面向切面编程有了感性认识以后,还需要了解它的一些基本概念。 切面:一个模块化的横切逻辑 连接点:程序执行中的某个具体的执行点。 增强处理:切面在某个特定连接点上执行的代码逻辑 切入点:对连接点的特征进行描述,可以使用正则表达式。 目标对象 被一个或多个切面增强的对象 Aop代理 由aop框架所创建的对象,实现执行增强处理方法 增强处理类型 将增强处理连接到应用程序中的类型或对象上的过程 5.3.2 使用Spring AOP实现日志输出 实现思路 1. 在项目中添加Spring AOP相关的jar文件 2. 编写前置增强和后置增强实现日志功能 3. 编写Spring配置文件,对业务方法进行增强处理 4. 编写代码,获取带有增强处理的业务对象。 为了增强方法中获取当前连接点信息,以便实施相关的判断和处理,可以在增强方法中声明一个JoinPoint类型的参数,Spring会自动注入该实例。 5.3.3 技能训练

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!