使用ssm框架开发企业级应用_第1页
使用ssm框架开发企业级应用_第2页
使用ssm框架开发企业级应用_第3页
使用ssm框架开发企业级应用_第4页
使用ssm框架开发企业级应用_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第一章初始MyBatis课程地位2/52本课目标学完本门课程后,你能够掌握MyBatis、Spring、SpringMVC三大框架技术搭建SpringMVC+Spring+MyBatis框架,并在此框架上熟练进行项目开发3/52课程结构图4/52课程项目展示贯穿案例:超市订单管理系统项目案例:APP信息管理平台演示:课堂贯穿案例(超市订单管理系统)5/52辅助学习资料推荐教员备课时根据课程情况在此添加内容,可以是青鸟云课堂推荐资料、也可以是教员积累的的资料,如帮助手册、经典书籍等6/52学习方法方法查看框架官方文档和源码多动手多思考7/52本章任务搭建MyBatis开发环境完成对用户表、供应商表的简单查询操作8/52本章目标理解数据持久化概念和ORM原理理解MyBatis的概念以及优点特性搭建MyBatis环境了解MyBatis与JDBC的区别与联系理解核心类的作用域和生命周期掌握全局配置文件结构内容9/52为什么需要框架技术如何更快更好地写简历?使用word简历模板思考使用模板有什么好处呢?问题不用考虑布局、排版等,提高效率可专心在简历内容上结构统一,便于人事阅读新手也可以作出专业的简历10/52框架技术框架技术是一个应用程序的半成品提供可重用的公共结构按一定规则组织的一组组件分析优势不用再考虑公共问题专心在业务实现上结构统一,易于学习、维护新手也可写出好程序11/52主流框架介绍3-1MVC设计模式的实现拦截器可变和可重用的标签ORM,简化数据库操作DAO层12/52主流框架介绍3-2依赖注入容器/AOP实现声明式事务简化JavaEE应用黏合剂,将大家组装到一起SpringMVC结构最清晰的MVCModel2实现高度可配置,支持多种视图技术定制化开发13/52主流框架介绍3-3半自动化的ORM实现DAO层动态SQL小巧灵活、简单易学14/52持久化与ORM2-1持久化是程序数据在瞬时状态和持久状态间转换的过程内存姓名:小颖性别:女特长:英语JDBC…Stmt.execute("…")…持久状态15/52持久化与ORM2-2ORM(ObjectRelationalMapping)编写程序的时候,以面向对象的方式处理数据保存数据的时候,却以关系型数据库的方式存储ORM解决方案包含下面四个部分在持久化对象上执行基本的增、删、改、查操作对持久化对象提供一种查询语言或者API对象关系映射工具提供与事务对象交互、执行检查、延迟加载以及其他优化功能

属性字段nameuser_namesexuser_Sexskilluser_skillUser对象name:小颖sex:女skill:英语、程序设计对象-关系映射16/52MyBatis简介MyBatis前身是iBatis,本是Apache的一个开源的项目官方网站ORM框架实体类和SQL语句之间建立映射关系特点基于SQL语法,简单易学能了解底层封装过程SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度方便程序代码调试17/52超市订单管理系统介绍2-1总体功能模块演示:课堂贯穿案例(超市订单管理系统)18/52超市订单管理系统介绍2-2数据库设计表用户表角色表供应商表订单表地址信息表逻辑外键关联演示:数据库表结构19/52搭建MyBatis开发环境使用MyBatis的开发步骤下载mybatis-3.2.2.jar包并导入工程编写MyBatis核心配置文件(configuration.xml)创建实体类-POJODAO层-SQL映射文件(mapper.xml)创建测试类读取核心配置文件mybatis-config.xml创建SqlSessionFactory对象,读取配置文件创建SqlSession对象调用mapper文件进行数据操作演示示例1:查询用户表记录数20/52学员操作—查询供应商表记录数需求说明搭建MyBatis开发环境,实现供应商表记录数查询在MyEclipse中创建工程,导入MyBatis的jar包创建MyBatis配置文件mybatis-config.xml,配置数据库信息编写实体类Provider.java编写SQL映射文件ProviderMapper.xml编写测试类ProviderMapperTest.java,运行输出结果练习提示完成时间:20分钟21/52常见问题及解决办法代码规范问题调试技巧共性问题集中讲解共性问题集中讲解22/52与JDBC直观对比MyBatis将代码分解包装对数据库的数据源的管理包括事务管理通过配置文件,获取返回结果到Java对象的映射通过配置文件,管理SQL及输入参数的映射23/52MyBatis框架优缺点优点与JDBC相比,减少了50%以上的代码量最简单的持久化框架,小巧并简单易学SQL代码从程序代码中彻底分离,可重用提供XML标签,支持编写动态SQL提供映射标签,支持对象与数据库的ORM字段映射缺点SQL语句编写工作量大,对开发人员有一定要求数据库移植性差MyBatis专注于SQL本身,是一个足够灵活的DAO层解决方案,适用于性能要求较高或者需求多变的互联网项目!24/52MyBatis基本要素MyBatis的核心对象SqlSessionFactoryBuilderSqlSessionFactorySqlSessionmybatis-config.xml系统核心配置文件mapper.xmlSQL映射文件25/52核心接口和类的结构SqlSessionFactoryBuilderSqlSessionFactorybuild()openSession()SqlSession26/52核心对象5-1SqlSessionFactoryBuilder用过即丢,其生命周期只存在于方法体内可重用其来创建多个SqlSessionFactory实例负责构建SqlSessionFactory,并提供多个build方法的重载build(InputStreaminputStream,Stringenvironment,Propertiesproperties)build(Readerreader,Stringenvironment,Propertiesproperties)build(Configurationconfig)配置信息以三种形式提供给SqlSessionFactory的build方法:InputStream(字节流)、Reader(字符流)、Configuration(类)读取XML文件构造方式:Stringresource="mybatis-config.xml";InputStreamis=Resources.getResourceAsStream(resource);SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(is);27/52核心对象5-2SqlSessionFactorySqlSessionFactory是每个MyBatis应用的核心作用:创建SqlSession实例作用域:Application生命周期与应用的生命周期相同单例存在于整个应用运行时,并且同时只存在一个对象实例演示示例2:编写MyBatisUtil类SqlSessionsession=sqlSessionFactory.openSession(booleanautoCommit);true:关闭事务控制(默认)false:开启事务控制28/52核心对象5-3SqlSession包含了执行SQL所需的所有方法对应一次数据库会话,会话结束必须关闭线程级别,不能共享SqlSessionsession=sqlSessionFactory.openSession();try{//dowork}finally{

session.close();}在SqlSession里可以执行多次SQL语句,但一旦关闭了SqlSession就需要重新创建!关闭SqlSession非常重要,必须要确保在finally方法体中正常关闭注意示例29/52核心对象5-4SqlSession的获取方式SqlSession的两种使用方式通过SqlSession实例直接运行映射的SQL语句基于Mapper接口方式操作数据Stringresource="mybatis-config.xml";InputStreamis=Resources.getResourceAsStream(resource);SqlSessionFactoryfactory=newSqlSessionFactoryBuilder().build(is);SqlSession

sqlSession=factory.openSession();30/52核心对象5-5需求说明使用SqlSession的两种使用方式实现用户表的查询操作调用sqlSession.selectList()执行查询操作调用sqlSession.getMapper(Mapper.class)执行DAO接口方法来实现对数据的查询操作

演示示例3:实现用户表的查询操作分析31/52小结非集成环境下的最佳实践SqlSessionFactoryBuilder用过即丢,推荐作用域范围:方法体内SqlSessionFactory最佳作用域范围:应用的全局作用域生命周期与应用的生命周期相同SqlSession线程级一个request请求期间32/52学员操作—实现供应商表的查询需求说明在上一个练习的基础上,实现对供应商表的查询操作(查询出全部数据)编写工具类-MyBatisUtil.java分别使用两种方式实现,并对比两种方式的区别通过SqlSession实例直接运行映射的SQL语句基于Mapper接口方式操作数据练习完成时间:20分钟33/52常见问题及解决办法代码规范问题调试技巧共性问题集中讲解共性问题集中讲解34/52系统核心配置文件mybatis-config.xml系统核心配置文件configuration配置properties可以配置在Java属性配置文件中settings修改MyBatis在运行时的行为方式typeAliases为Java类型命名一个别名(简称)typeHandlers类型处理器objectFactory对象工厂plugins插件environments环境environment环境变量transactionManager事务管理器dataSource数据源mappers映射器注意元素节点的顺序!35/52配置properties元素配置properties元素的两种方式通过外部指定的方式(perties),实现动态配置直接配置为xml,实现动态配置36/52properties3-1通过外部指定的方式(perties),实现动态配置配置properties的resource属性<properties

resource="perties"/>

......<dataSourcetype="POOLED"> <propertyname="driver"value="${driver}"/> <propertyname="url"value="${url}"/> <propertyname="username"value="${user}"/> <propertyname="password"value="${password}"/></dataSource>37/52properties3-2直接配置为xml,实现动态配置配置property的name和value<properties>

<propertyname="driver"value="com.mysql.jdbc.Driver"/> <propertyname="url"value="jdbc:mysql://:3306/smbms"/> <propertyname="user"value="root"/> <propertyname="password"value="root"/></properties>......<dataSourcetype="POOLED"> <propertyname="driver"value="${driver}"/> <propertyname="url"value="${url}"/> <propertyname="username"value="${user}"/> <propertyname="password"value="${password}"/></dataSource>演示示例4:properties元素配置-xml38/52properties3-3若两种方式同时都用了,那么哪种方式优先?配置properties的resource指定配置property的name和value<propertiesresource="perties"> <propertyname="driver"value="com.mysql.jdbc.Driver"/> <propertyname="url"value="jdbc:mysql://:3306/smbms"/> <propertyname="user"value="root"/> <propertyname="password"value="root"/></properties>思考演示示例5:properties元素配置-扩展结论:resource属性值的优先级高于property子节点配置的值!39/52settings元素用来修改MyBatis运行时的行为方式主要是MyBatis的一些全局配置属性的设置<settings> <!--是否启用延迟加载--> <settingname="lazyLoadingEnabled"value="false"/></settings>设置项描述允许值默认值cacheEnabled对在此配置文件下的所有cache进行全局性开/关设置true|falsetruelazyLoadingEnabled全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载true|falsetrueautoMappingBehaviorMyBatis对于resultMap自动映射匹配级别NONE|PARTIAL|FULLPARTIAL……(9个)..................40/52typeAliases元素类型别名仅仅只关联XML配置,简写冗长的Java类名<typeAliases> <typeAliasalias="User"type="cn.smbms.pojo.User"/></typeAliases><typeAliases> <packagename="cn.smbms.pojo"/></typeAliases>演示示例6:优化typeAliases元素配置默认名称:指定包下JavaBean的非限定类名41/52environments元素4-1environments元素表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上子元素节点:environment,但是必须指定其中一个为默认运行环境(通过default指定)每个SqlSessionFactory实例只能选择一个运行环境!42/52environments元素4-2<environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"> <propertyname="driver"value="${driver}"/> <propertyname="url"value="${url}"/> <propertyname="username"value="${user}"/> <propertyname="password"value="${password}"/></dataSource></environment><environmentid="test">……</environment></environments>默认的运行环境ID运行环境ID运行环境ID事务管理器配置数据源配置43/52environments元素4-3transactionManager-事务管理器<transactionManagertype="[JDBC|MANAGED]"/>语法JDBCMANAGED(托管)44/52environments元素4-4dataSourcedataSource元素使用基本的JDBC数据源接口来配置JDBC连接对象的资源有三种内建的数据源类型<dataSourcetype="POOLED"> <propertyname="driver"value="${driver}"/> <propertyname="url"value="${url}"/> <propertyname="username"value="${user}"/> <propertyname="password"value="${password}"/></dataSource><dataSourcetype="[UNPOOLED|POOLED|JNDI]"/>语法示例45/52mappers元素映射器,定义SQL映射语句须在配置中引用mapper映射文件方式一:使用类资源路径获取资源方式二:使用URL获取资源<!--将mapper映射文件加入到系统核心配置文件中--><mappers> <mapperresource="cn/smbms/dao/user/UserMapper.xml"/></mappers><mappers>

<mapperurl="file:///E:/sqlmappers/UserMapper.xml"/>

<mapperurl="file:///E:/sqlmappers/ProviderMapper.xml"/></mappers>演示:使用URL获取资源优化46/52学员操作—更改供应商表的查询需求说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论