《《云计算》商业云平台程序开发高级(SSM)-课程标准.docx》由会员分享,可在线阅读,更多相关《《云计算》商业云平台程序开发高级(SSM)-课程标准.docx(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、商业云平台程序开发高级SSM课程标准一、课程性质与任务一课程性质SSM 是云计算专业的核心课程, SSM(Spring SpringMVC MyBatis)是主流系统框架,主要学习各个框架的搭建和整合二课程任务本课程主要是对于各个框架搭建使用,通过学习本课程教会学生使用各个框架的配置,数据及数据流操作,把握 Spring 的两大核心技术技术 AOP(面对切面编程)和IOC把握反转, mybatis 的数据库连接配置, springmvc 的核心原理及组件DispatcherServlet二、教学要求一课程总体目标本课程主要是对于各个框架搭建使用,通过学习本课程教会学生使用各个框架的配置,数据及
2、数据流操作,把握 Spring 的两大核心技术技术 AOP(面对切面编程)和IOC把握反转, mybatis 的数据库连接配置, springmvc 的核心原理及组件DispatcherServlet1. 学问目标(1) spring 的 AOP 和 Ioc(2) mybatis 的配置文件,环境配置文件和 sql 映射文件2. 力气目标(1) 能够搭建使用 SSM(2) 能够使用 mybatis 连接数据库操作数据库数据(3) 使用 sql 映射文件(4) 在 java 中对数据进展增删查改(5) 培育学生觉察问题、分析问题和解决问题的力气3. 素养目标(1) 培育学生对程序设计的兴趣,充分
3、发挥学生的自主学习力气(2) 培育学生的与人沟通、与人合作及信息处理的力气(3) 培育学生分析问题、解决问题及制造思维力气(4) 培育良好职业素养和职业道德(5) 培育团队协作和和谐的沟通力气二教学方式本课程承受理论+实践的授课方式,在教学过程中主要承受讲授、演示的方式进展教学,以工程的方式贯穿整个教学过程。1、承受“任务驱动”教学模式,全部课程内容的安排均围绕学习任务的完成来开放。2、主要承受的教学方法有以下几种:(1) 任务教学法。解决真实或虚拟企业工程开发中的实际问题,用任务牵引,承受工程组的形式,依据软件公司运作形式和工程开发流程,以学生为中心,全面完成任务分析、信息收集、打算制定、做
4、出决策、实施打算、反响把握、评估结果、拓展思考等教学全过程,到达通过学生自己的实践或行动来培育和提高职业力气的教学目 标。(2) 分组教学法。依据学生实际状况,承受男生带女生、职高生带普高生、根底好带根底差的学生进展分组,小组间共同完成任务,培育学生的协作、团队意识。(3) 鼓舞教学法。在教学过程中,通过各种鼓舞手段,有意识地引导学生各种创式思维,促进学生之间智力活动的相互感染,从而开拓进取,提高学习效率。如各个学习任务的制定,由易到难,学生经过努力完成开发后,会有逐步递增的成就感;以绩效考核形式治理学生学习过程和效果,增加其团队意识和荣誉感,培育以创视角和思维解决问题的意识和习惯,效果显著。
5、三教学条件含试验设备、软件环境计算机操作系统建议 windows7 及以上版本、投影仪、JDK1.8、myEclipse、Microsoft Office 2023四考核评价方式考核主要由寻常成绩和理论考试成绩组成。1、寻常成绩寻常成绩强调寻常的出勤、课堂纪律、课堂表现和作业,教师在整个授课过程中监控学生的学习效果以及学习态度等。寻常成绩占总成绩的 40%。2、理论考试成绩理论考试承受传统的笔试方式,为了更好的到达考核的目的,我们承受教考分别的形式来组织理论考试。理论考试成绩占总成绩的 60%。序号任务名称目标要点总学时数理论学时数实践学时数其他1Mybatis 框架搭建Mybatis 框架搭
6、建14862MyBatis 功能架构MyBatis 功能架构1486三、课程安排- 2 -34Mybatis 的映射文件mapperspring 框架搭建Mybatis 的映射文件mapperspring 框架搭建141488665Spring 的 AOPSpring 的 AOP14866Spring 的 IOCSpring 的 IOC14867ssm 框架的整合springmvc 框架搭建14868mavenmaven1486合计1126448四、教学内容一、mybatisk 框架1) 概念MyBatis 本是 apache 的一个开源工程 iBatis, 2023 年这个工程由 apach
7、e software foundation 迁移到 google code,并且改名为 MyBatis。2023 年 11 月迁移到 Github。iBATIS 一词来源于“internet”和“abatis”的组合,是一个基于 Java 的长期层框架。iBATIS 供给的长期层框架包括 Data Access ObjectsDAOs和 SQL Maps。MyBatis 是一款优秀的长期层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避开了几乎全部的 JDBC 代码和手动设置参数以及猎取结果集。MyBatis 可以使用简洁的 XML 或注解来配置和映射原生信息,将接口和Ja
8、va 的POJOs(Plain Ordinary Java Object,一般的 Java 对象)映射成数据库中的记录。1 mybaits 是 orm 框架ORM 指的是对象关系映射(Object Relational Mapping)。其中 Object 指的就是java 中的对象,Relational 指的是关系型数据,而 Mapping 指的就是对象与关系型数据库的映射。 其中映射是关键。所谓映射,就是针对关系型数据库中的表,我们要创立与之对应的java 对象,例如:有一个 user 表,定义如下: 创立 user 表的 sql 语句CREATE TABLE user (id int(1
9、1) unsigned NOT NULL AUTO_INCREMENT,user_name varchar(255),password varchar(255), PRIMARY KEY (id)- 3 -) ENGINE=InnoDB DEFAULT CHARSET=utf8;针对这个表,我们要创立一个与之对应的 Java 对象 User:package com.niit.web.pojo; public class User private Integer id; private String userName; private String password; public Intege
10、r getId return id;public void setId(Integer id) this.id = id;public String getUserName return userName;public void setUserName(String userName) this.userName = userName;public String getPassword return password;public void setPassword(String password) this.password = password;可以看到 User 对象中的属性名与数据库表
11、user 的字段名是一一对应的。不过即使名字不一样也没有关系,由于 ORM 框架通常都会支持用户定义映射文件(Mapping File) 来指定 java 对象中的属性与数据库表字段的对应关系。有了这个映射关系,ORM 框架既可以发挥它的威力,例如:保存记录:直接保存java 对象即可,ORM 框架会自动将 java 对象每个属性的值保存到对应的数据库表对应的字段上。查询记录:ORM 框架会将查询到的结果集(ResultSet)封装成对应的 Java 对象。这些全部强大的功能都是在对象关系映射的根底上完成的。- 5 -2) MyBatis 总体流程一般使用 MyBatis 框架的总体流程如下:
12、 (1)加载配置并初始化触发条件:加载配置文件处理过程:将SQL 的配置信息加载成为一个个 MappedStatement 对象包括了传入参数映射配置、执行的 SQL 语句、结果映射配置,存储在内存中。(2) 接收调用恳求触发条件:调用 MyBatis 供给的 API传入参数:为 SQL 的 ID 和传入参数对象处理过程:将恳求传递给下层的恳求处理层进展处理。(3) 处理操作恳求触发条件:API 接口层传递恳求过来传入参数:为 SQL 的 ID 和传入参数对象处理过程:(A) 依据 SQL 的 ID 查找对应的 MappedStatement 对象。(B) 依据传入参数对象解析 MappedS
13、tatement 对象,得到最终要执行的 SQL 和执行传入参数。(C) 猎取数据库连接,依据得到的最终 SQL 语句和执行传入参数到数据库执行,并得到执行结果。(D) 依据 MappedStatement 对象中的结果映射配置对得到的执行结果进展转换处理, 并得到最终的处理结果。(E) 释放连接资源。(4) 将最终的处理结果返回。3、MyBatis 功能架构我们把 MyBatis 的功能架构分为三层:(1) API 接口层:供给应外部使用的接口API,开发人员通过这些本地API 来操纵数据库。接口层一接收到调用恳求就会调用数据处理层来完成具体的数据处理。(2) 数据处理层:负责具体的 SQL
14、 查找、SQL 解析、SQL 执行和执行结果映射处理等。它主要的目的是依据调用的恳求完成一次数据库操作。(3) 根底支撑层:负责最根底的功能支撑,包括连接治理、事务治理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最根底的组件。为上层的数据处理层供给最根底的支撑。4、MyBatis 框架架构(1) 加载配置:配置来源于两个地方,一处是配置文件,一处是Java 代码的注解,将SQL 的配置信息加载成为一个个 MappedStatement 对象包括了传入参数映射配置、执行的 SQL 语句、结果映射配置,存储在内存中。(2) SQL 解析:当 API 接口层接收到调用恳求时,会接收到
15、传入 SQL 的 ID 和传入对象可以是 Map、JavaBean 或者根本数据类型,MyBatis 会依据 SQL 的 ID 找到对应的MappedStatement,然后依据传入参数对象对 MappedStatement 进展解析,解析后可以得到最终要执行的 SQL 语句和参数。(3) SQL 执行:将最终得到的 SQL 和参数拿到数据库进展执行,得到操作数据库的结果。(4)结果映射:将操作数据库的结果依据映射的配置进展转换,可以转换成 HashMap、JavaBean 或者根本数据类型,并将最终结果返回。5、MyBatis 入门程序我们将完成 MyBatis 的一个简洁的应用,就是把数据
16、库表 user 映射到 User,然后查询打印出 User 的根本信息。通过这个入门程序,让我们了解下 MyBatis 的使用流程和根本的原理应用。1、工程环境搭建建立Java 工程.承受MyBatis 的版本为3.4.6 需要导入MyBatis 核心jar 包和依靠jar 包。假设使用 Maven 来构建工程,则需将下面的 dependency 代码置于 pom.xml 文件中:org.MyBatisMyBatis3.4.62、在 Classpath 路径下建立 SqlMapConfig.xml 配置文件上图3、建立 JavaBean 对象package com.niit.MyBatis.p
17、ojo; public class User private int id;private String userName; private String password;public int getId return id;public void setId(int id) this.id = id;public String getUserName return userName;public void setUserName(String userName) this.userName = userName;public String getPassword return passwo
18、rd;public void setPassword(String password) this.password = password;Overridepublic String toString return “Userid:“ + id + “, userName:“ + userName + “, password:“ + password + “ “;4、建立 Mapping 映射文件在 com.niit.MyBatis.mapper 包下建立 UserMapper.xml,此文件配置了 sql 语句的具体信息,UserMapper.xml 的内容如下:“ select * from
19、 user where id=#id“select * from user where user_name like ”%$value%”5、在 SqlMapConfig.xml 中配置 mapping 映射文件6、建立测试类进展测试package com.niit.MyBatis.test;import java.io.IOException; import java.io.InputStream; import java.util.List;import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.Sql
20、Session;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test;import com.niit.MyBatis.pojo.User; public class TestMyBatis Testpublic void testMyBatisById throws IOException / 加载 SqlMapConfig.xml 配置文件InputStream in = Resour
21、ces.getResourceAsStream(“SqlMapConfig.xml“);/ 创立 SqlSessionFactorySqlSessionFactoryfactory=newSqlSessionFactoryBuilder.build(in);/ 创立 SqlSessionSqlSession session = factory.openSession;/ 利 SqlSession 完成查询操作,第一个参数是 MappedStatement 的 id.留意namespace 和配置的 id 唯一确定 id. 其次个参数是输入参数 , 对应配置文件的parameterTypeUse
22、ruser=session.selectOne(“com.niit.MyBatis.pojo.UserMapper.findUserById“, 1); System.out.println(user);/ 关闭 SqlSession session.close;Testpublic void testMyBatisByName throws IOException InputStream in=Resources.getResourceAsStream(“SqlMapConfig.xml“); SqlSessionFactory factory=new SqlSessionFactoryBu
23、ilder.build(in); SqlSession session = factory.openSession;Listusers=session.selectList(“com.niit.MyBatis.pojo.UserMapper.findUserByName“,“n“);System.out.println(“UserList:“+users); session.close;MyBatis 框架主要是围围着 SqlSessionFactory 这个类进展的,这个创立过程如下: 定义一个 Configuration 对象,其中包含数据源、事务、mapper 文件资源以及影响数据库行为
24、属性设置 settings,通过配置对象创立一个 SqlSessionFactoryBuilder 对象 , 通 过 SqlSessionFactoryBuilder 获 得 SqlSessionFactory 的 实 例 。SqlSessionFactory 的实例可以获得操作数据的 SqlSession 实例,通过这个实例对数据库进展操作。SqlSessionFactory 与 SqlSession 都是一个接口。SqlSessionFactory 是通过SqlSessionFactoryBuilder 的build 方法创立的,而build 方法创立的是一个 SqlSessionFact
25、ory 的实现类,叫 DefaultSqlSessionFactory。然后这个实现类最终要到达的一个目的是为了创立出 DefaultSqlSession,这个是SqlSession 的实现类。那么这个实现类 DefaultSqlSession 是干什么的呢?这个实现类可以进展增删查改以及事务操作等。6、MyBatis 常用对象SqlSessionFactoryBuilder使用 MyBatis 的主要 Java 接口就是 SqlSession。你可以通过这个接口来执行命令,猎取映射器和治理事务。我们会概括争论一下 SqlSession 本身,但是首先我们还是要了解如何猎取一个 SqlSess
26、ion 实例。SqlSessions 是由 SqlSessionFactory 实例创立的。 SqlSessionFactory 对象包含创立 SqlSession 实例的全部方法。而SqlSessionFactory 本身是由 SqlSessionFactoryBuilder 创立的,它可以从 XML、注解或手动配置 Java 代码来创立 SqlSessionFactory。SqlSessionFactoryBuilder 有五个 build 方法,每一种都允许你从不同的资源中创立一个 SqlSession 实例:SqlSessionFactory build(InputStream inp
27、utStream)SqlSessionFactory build(InputStream inputStream, String environment) SqlSessionFactory build(InputStream inputStream, Properties properties) SqlSessionFactory build(InputStream inputStream, String env, Properties props)SqlSessionFactory build(Configuration config)第一种方法是最常用的,它使用了一个参照了XML 文档或
28、上面争论过的更特定的MyBatis-config.xml 文件的 Reader 实例。 可选的参数是 environment 和properties。environment 打算加载哪种环境,包括数据源和事务治理器。比方:.假设你调用了参数有 environment 的 build 方法, 那么 MyBatis 将会使用configuration 对象来配置这个 environment。固然,假设你指定了一个不合法的- 11 -environment,你就会得到错误提示。假设你调用了不带 environment 参数的 build 方 法 , 那 么 就 使 用 默 认 的 environme
29、nt 在 上 面 的 示 例 中 指 定 为default=“development“ 的代码。假设你调用了参数有 properties 实例的方法, 那么 MyBatis 就会加载那些properties属性配置文件,并在配置中可用。那些属性可以用$propName 语法形式屡次用在配置文件中。回想一下,属性可以从 MyBatis-config.xml 中被引用,或者直接指定它。因此理解优先级是很重要的。我们在文档前面已经提及它了,但是这里要再次重申:假设一个属性存在于这些位置,那么 MyBatis 将会依据下面的挨次来加载它们: 首先读取在 properties 元素体中指定的属性;其次,
30、读取从 properties 元素的类路径 resource 或 url 指定的属性,且会掩盖已经指定了的重复属性;最终,读取作为方法参数传递的属性,且会掩盖已经从properties 元素体和resource 或 url 属性中加载了的重复属性。因此,通过方法参数传递的属性的优先级最高,resource 或 url 指定的属性优先级中等,在 properties 元素体中指定的属性优先级最低。总结一下,前四个方法很大程度上是一样的,但是由于掩盖机制,便允许你可选地指定 environment 和/或 properties。以下给出一个从 MyBatis-config.xml 文件创立 Sql
31、SessionFactory 的例如:String resource = “org/MyBatis/builder/MyBatis-config.xml“; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder; SqlSessionFactory factory = builder.build(inputStream);留意到这里我们使用了 Resources 工具类,这个类在 org.
32、apache.ibatis.io 包中。Resources 类正如其名,会帮助你从类路径下、文件系统或一个 web URL 中加载资源文件。看一下这个类的源代码或者通过你的 IDE 来查看,就会看到一整套相当有用的方法。这里给出一个简表:URL getResourceURL(String resource)URL getResourceURL(ClassLoader loader, String resource) InputStream getResourceAsStream(String resource)InputStream getResourceAsStream(ClassLoade
33、r loader, String resource) Properties getResourceAsProperties(String resource)Properties getResourceAsProperties(ClassLoader loader, String resource) Reader getResourceAsReader(String resource)Reader getResourceAsReader(ClassLoader loader, String resource)File getResourceAsFile(String resource)File
34、getResourceAsFile(ClassLoader loader, String resource) InputStream getUrlAsStream(String urlString)Reader getUrlAsReader(String urlString) Properties getUrlAsProperties(String urlString) Class classForName(String className)最终一个 build 方法的参数为 Configuration 实例。configuration 类包含你可能需要了解 SqlSessionFactory
35、 实例的全部内容。Configuration 类对于配置的自查很有用,它包含查找和操作 SQL 映射当应用接收恳求时便不推举使用。作为一个 Java API 的 configuration 类具有全部配置的开关,这些你已经了解了。这里有一个简洁的例如,教你如何手动配置configuration 实例,然后将它传递给build 方法来创立 SqlSessionFactory。DataSource dataSource = BaseDataTest.createBlogDataSource; TransactionFactory transactionFactory = new JdbcTrans
36、actionFactory; Environment environment =new Environment(“development“, transactionFactory, dataSource);Configuration configuration = new Configuration(environment); configuration.setLazyLoadingEnabled(true); configuration.setEnhancementEnabled(true); configuration.getTypeAliasRegistry.registerAlias(
37、Blog.class); configuration.getTypeAliasRegistry.registerAlias(Post.class); configuration.getTypeAliasRegistry.registerAlias(Author.class); configuration.addMapper(BoundBlogMapper.class); configuration.addMapper(BoundAuthorMapper.class);SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder;
38、 SqlSessionFactory factory = builder.build(configuration);现在你就获得一个可以用来创立 SqlSession 实例的 SqlSessionFactory 了!7、SqlSessionFactorymySqlSessionFactory 有六个方法创立 SqlSession 实例。通常来说,当你选择这些方法时你需要考虑以下几点:事务处理:我需要在 session 使用事务或者使用自动提交功能auto-commit吗?通常意味着很多数据库和/或 JDBC 驱动没有事务连 接:我需要依靠 MyBatis 获得来自数据源的配置吗?还是使用自己供
39、给的配置?执行语句:我需要 MyBatis 复用预处理语句和/或批量更语句包括插入和删除 吗?基于以上需求,有以下已重载的多个 openSession 方法供使用。SqlSession openSessionSqlSession openSession(boolean autoCommit) SqlSession openSession(Connection connection)SqlSession openSession(TransactionIsolationLevel level)SqlSessionopenSession(ExecutorTypeexecType,Transactio
40、nIsolationLevel level)SqlSession openSession(ExecutorType execType)SqlSession openSession(ExecutorType execType, boolean autoCommit) SqlSession openSession(ExecutorType execType, Connection connection) Configuration getConfiguration;默认的 openSession方法没有参数,它会创立有如下特性的 SqlSession: 会开启一个事务也就是不自动提交。 将从由当前环境配置的 DataSource 实例中猎取 Connection 对象。 事务隔离级别将会使用驱动或数据源的默认设置。 预处理语句不会被复用,也不会批量处理更。这些方法大都是可读性强的。向 autoCommit 可选参数传递 true 值即可开启自动提交功能。假设要使用自己的 Connection 实例, 传递一个 Connectio