SSM框架(SpringMVC,Spring,Mybatis)

一、maven

跨平台的项目管理工具(规范整个组织的构建系统),基于java平台的项目构建、依赖管理和项目信息管理、自动生成站点等特性

(参考图片)

二、SpringBoot

springboot是用来整合框架的,软件是由框架组成的(jar包)

三、Springmvc,spring,mybatis介绍

(参考图片)

 

SpringMVC

控制层框架,是Springweb,实现url映射,接收参数,返回数据等。在Spring MVC框架中,从“Request(请求)”开始,依次进入“DispatcherServlet(核心分发器)” —> “HandlerMapping(处理器映射)” —> “Controller(控制器)” —> “ModelAndView(模型和视图)” —> “ViewResolver(视图解析器)” —> “View(视图)” —> “Response(响应)”结束,其中DispatcherServlet、HandlerMapping和ViewResolver 只需要在XML文件中配置即可,从而大大提高了开发的效率,特别是对于 HandlerMapping 框架为其提供了默认的配置。Spring MVC 框架的结构图如下所示:

  • M:model数据模型层
  • V:view视图层
  • C:controller控制层

表现层的三大任务:

  • URL到controller的映射
  • http请求参数绑定
  • http响应的生成和输出

(参考图片)

Spring

Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的,“拿来主义”,把业界做的最好的技术黏合起来形成一个强大的企业级的应用框架。

最核心的是:

  • IoC控制反转
  • DI依赖注入
  • SpringAOP面向切面编程
  • 事务控制

 IoC和DI的关系:

       在平时的java应用开发中,我们要实现某一个功能或者说是完成某个业务逻辑时可能需要多个对象来协作完成,在没有使用Spring的时候,每个对象在需要使用他的合作对象时,自己均要使用像new object() 这样的语法来将合作对象创建出来,这个合作对象是由自己主动创建出来的,创建合作对象的主动权在自己手上,自己需要哪个合作对象,就主动去创建,创建合作对象的主动权和创建时机是由自己把控的,而这样就会使得对象间的耦合度高了,A对象需要使用合作对象B来共同完成一件事,A要使用B,那么A就对B产生了依赖,也就是A和B之间存在一种耦合关系,并且是紧密耦合在一起,而使用了Spring之后就不一样了,创建合作对象B的工作是由Spring来做的,Spring创建好B对象,然后存储到一个容器里面,当A对象需要使用B对象时,Spring就从存放对象的那个容器里面取出A要使用的那个B对象,然后交给A对象使用,至于Spring是如何创建那个对象,以及什么时候创建好对象的,A对象不需要关心这些细节问题(你是什么时候生的,怎么生出来的我可不关心,能帮我干活就行),A得到Spring给我们的对象之后,两个人一起协作完成要完成的工作即可。

       即,控制反转IoC(Inversion of Control)是说创建对象的控制权进行转移,以前创建对象的主动权和创建时机是由自己把控的,而现在这种权力转移到第三方,比如转移交给了IoC容器,它就是一个专门用来创建对象的工厂,你要什么对象,它就给你什么对象,有了 IoC容器,依赖关系就变了,原先的依赖关系就没了,它们都依赖IoC容器了,通过IoC容器来建立它们之间的关系。

      DI(依赖注入)其实就是IOC的另外一种说法,DI是由Martin Fowler 在2004年初的一篇论文中首次提出的。他总结:控制的什么被反转了?就是:获得依赖对象的方式反转了。

IoC是设计思想,IoC有三个核心:BeanFactory、反射、DI。BeanFactory利用反射实现对象的创建,DI实现对象关系管理。

 自动装配:

        利用注解方式,我们只需要写@Autowired注解,底层就会去容器中找对应的对象,如果有获取到,反射调用其对应的set方法,设置。而这个调用过程都是自动,我们没有手工去写set方法。所以这个过程也称为自动装配。

Spring小结:

给UserServiceimpl增加功能,需要修改UserServiceImpl代码吗?

AOP切面就是对动态代理的封装,让我们容易使用动态代理,自动执行的代码,放扩展代码,是个新名词

静态代理,动态代理,AOP都实现了无侵入式编码,增加功能不用修改业务代码。工作中推荐用AOP。

Spring主要作用有两个:管理service层对象,AOP,对动态代理做个封装。

Mybatis

Mybatis是一个持久层,对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQl本身,而不需要去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

通过xml或注解的方式将要执行的各种statement(statement、preparedStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

总之,Mybatis对JDBC访问数据库的过程进行了封装,简化了JDBC代码,解决JDBC将结果集封装为Java对象的麻烦。

创建类并实现JDBC程序(六个步骤):

1、注册数据库驱动

Class.forName("com.mysql.jdbc.Driver");

2、获取数据库连接

Connection conn=DriverManager.getConnection(“jdbc:mysql://localhost:3306/jt_db?charasetEncoding=utf-8”,"root","123456");

3、获取传输器

Statement stat=conn.createStatement();

4、发送SQL到服务器执行并返回执行结果

String sql=“SQl命令”;
ResultSet rs=stat.executeQuery(sql);

5、处理结果

while(rs.next()){
     int id = rs.getInt("id");
     String name = rs.getString("name");
     double money = rs.getDouble("money");
     System.out.println(id+" : "+name+" : "+money);
}
6、释放资源

rs.close();
stat.close();
conn.close();
System.out.println("TestJdbc.main()....");
}

注册驱动,就是让JDBC程序加载mysql驱动程序,并管理驱动,驱动程序实现了JDBC API定义的接口以及数据库服务器交互的功能,加载驱动是为了方便使用这些功能。

ResultSet对象用于封装sql语句查询的结果。该对象上提供了遍历数据及获取数据的方法。

(1)遍历数据行的方法

next()-使指向数据行的箭头向下移动一行,并返回一个布尔类型的结果。(true指向了一行数据,false没有指向任何数据(后面也没有数据了))

(2)获取数据的方法

释放资源:顺序释放,越晚获取的越先关闭

 

单元测试

     不用创建新的类,也不用提供main函数,也不用创建类的实例,就可以直接执行一个方法。

加了@Test注解的方法,可以通过单元测试(junit)框架测试该方法。底层会创建该方法所有类的实例,通过实例调用该方法

使用@Test单元测试测试的方法必须满足如下条件:

(1)方法必须是公共的

(2)方法必须是非静态的

(3)方法必须是无返回值的

(4)方法必须是无参数的

(5)进行单元测试的方法或类,命名时不要命名为Test/test

PreparedStatement

传输对象,是Statement的子接口,比Statement更加安全,并且能够提高程序执行的效率

数据库连接池:

常量池/线程池/连接池

池:指内存中的一片空间(容器,比如数组、集合)

连接池:就是将连接存放在容器中,供整个程序共享,可以实现连接的复用,减少连接创建和关闭的次数,从而提高程序执行的效率

所有的连接池都要实现一个借口--DateSourse(数据源),因此连接池也被叫做数据源

C3P0连接池开发步骤:

1、导入开发包
c3p0-0.9.1.2.jar
2、创建数据库连接池(对象)
ComboPooledDateSource cpds=new ComboPooledDataSource();
3、设置连接数据库的基本信息
(1)方式一:(不推荐)直接将参数通过pool.setXxx方法设置给c3p0程序
后期一旦参数发生变化,就要修改程序,要重新编译项目、重新发布项目
(2)方式二:将连接参数提取到properties文件中(推荐)
文件必须放在src(源码根目录)目录下
文件必须叫做c3p0.properties
在类目录下(开发时可以放在src或者类似的源码目录下),添加一个c3p0.properties文件
(3)方式三:将连接参数提取到xml文件中(推荐)
文件必须放在src(源码根目录)目录下 !
文件名必须叫做 c3p0-config.xml
在类目录下(开发时可以放在src或者类似的源码目录下),添加一个c3p0-config.xml文件
4、从连接池中获取一个连接对象并进行使用
Connection conn=pool.getConnection();
5、用完连接后将连接池换回连接池中

JdbcUtil.close(conn,ps,rs);

为什么要使用Mybatis

1、使用传统方式JDBC访问数据库:

(1)使用JDBC访问数据库有大量重复代码(比如注册驱动、获取连接、获取传输器、释放资源等)

(2)JDBC自身没有连接池,会频繁的创建连接和关闭连接,效率低

(3)SQL是写死在程序中,一旦修改SQL,需要对类重新编译

(4)对查询SQL执行后返回的ResultSet对象,需要手动处理,有时会特别麻烦

2、使用mybatis框架访问数据库:

(1)Mybatis对JDBC进行了封装,可以简化JDBC代码

(2)Mybatis自身支持连接池(也可以配置其他的连接池),因此可以替身程序的效率

(3)Mybatis是将SQL配置在mapper文件中,修改SQL只是修改配置文件,类不需要重新编译

(4)对查询SQL执行后返回的ResultSet对象,Mybatis会帮我们处理,转换成java对象

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架中,SpringSpringMVCMyBatis分别负责以下不同的任务: 1. SpringSpring是一个轻量级的容器和开发框架,用于管理和组织应用程序中的各个组件(如实体类,服务类等)。它负责提供依赖注入和控制反转的功能,以便降低组件之间的耦合性。同时,Spring还提供了一整套模块化的功能,例如事务管理,安全性控制,AOP(面向切面编程)等。 2. SpringMVCSpringMVC是基于MVC(模型-视图-控制器)设计模式的Web应用程序开发框架。它负责处理和响应来自用户的HTTP请求,并且将请求分发给适当的控制器进行处理。SpringMVC提供了一种灵活和可定制的方式来组织和处理Web请求和相应,以及在视图呈现时提供数据。 3. MyBatisMyBatis是一个开源的持久化框架,用于将Java对象映射到数据库中的数据。它通过提供一个简单的XML或注解配置方式,实现了对象与数据库之间的映射关系。MyBatis提供了丰富的SQL映射能力,包括高级的查询功能和结果集映射。它还提供了一些性能优化的功能,如缓存和延迟加载,以提高数据库访问效率。 总而言之,Spring负责统一管理应用程序的各个组件,处理依赖注入和控制反转;SpringMVC负责处理Web请求和响应,并提供灵活的视图展示方式;MyBatis负责数据库访问,通过映射Java对象和数据库数据,实现持久化操作。这三个框架SSM框架中紧密合作,共同组成了一个完整的应用程序开发框架

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值