美文网首页
三大框架整理

三大框架整理

作者: wqjcarnation | 来源:发表于2020-04-26 11:28 被阅读0次

目标

  • mybatis
  • spring
  • springmvc

mybatis

image.png

1、主配置文件叫SqlMapConfig.xml
2、映射文件mapper.xml
3、sqlSessionFactory是生成连接的工厂
4、动态代理的几个特点(usermapper.xml usermapper.java)
1)usermapper.xml的namespace=usermapper.java的完全限定名
2)usermapper.xml的statementid==接口的方法名
3)usermapper.xml的parameterType=接口方法的参数类型
4)usermapper.xml的resultType=接口方法的返回值类型
5).xml与.java文件名前缀相同
5、typeAliases指定别名
第一种 为单个文件指定别名
<typeAliases>
<typeAlias type="com.mybatis.pojo.Emp" alias="user"/>
</typeAliases>
第二种 批量指定别名,为包下的所有类指定别名,别名默认为类名(首字母大写或小写)
<package name="com.mybatis.pojo"/>
6、整包扫描
<mappers>
<package name="com.mybatis.day02.mapper"/>
</mappers>
7、放在接口的常用注解
@Select @Insert @Update @Delete
8、动态sql
<if test="ename!=null and ename!=''">
ename =#{ename}
</if>
<where> :去掉多余的and 或or
<set> :去掉update语句中多余的逗号
<Trim>: 动态添加
prefix-前缀,向前追加什么
suffix-后缀,后面追回什么
suffixOverrides 去掉最后的什么字符
prefixOverrides="" 前面去掉什么

<For each>:主要用在in语句上
collection=list/array

<sql>代码段:sql与include配合使用

        <sql id="findsql">
     select *  from t_user
      </sql> 
      <include refid="findsql"></include>

9、关联映射
一对一:association
一对多:collection
映射<select id="findEmpByEmpNo" parameterType="int" resultMap="empMap">
<resultMap type="emp" id="empMap">
主键字段;; <id column="empno" property="empno"></id>
普通字段:<result column="ename" property="ename"/>

spring

IOC:控制反转
DI:依赖主入
AOP:面向切面编程/面向方面编程
bean:是有唯一id的java类

IOC:控制反转

1、依赖注入的三种方式:属性的set方法 构造方法 接口注入(不支持)
2、bean的作用域 scope的五个值
singleton:单例 prototype:多例 request:请求 session golbalsession

(1)singleton:默认,每个容器中只有一个bean的实例,单例的模式由BeanFactory自身来维护。

(2)prototype:为每一个bean请求提供一个实例。

(3)request:为每一个网络请求创建一个实例,在请求完成以后,bean会失效并被垃圾回收器回收。

(4)session:与request范围类似,确保每个session中有一个bean的实例,在session过期后,bean会随之失效。

(5)global-session:全局作用域,global-session和Portlet应用相关。当你的应用部署在Portlet容器中工作时,它包含很多portlet。如果你想要声明让所有的portlet共用全局的存储变量的话,那么这全局变量需要存储在global-session中。全局作用域与Servlet中的session作用域效果相同。

后三个都是web的作用域
3、beanFactory(懒加载,不会在启动时验证xml的正确性)和applicationContext区别
4、加载配置文件方式
ClassPathXmlApplicationContext:加载类路径下的xml配置文件
FileSystemXmlApplicationContext:加载文件系统下的xml配置文件

5、Bean生命周期(了解)

spring AOP

1\Aspect Oriented Programming (面向切面编程)
作用:一次解决一类问题
在不修改原有代码的基础上来扩展程序
2\AOP底层用的是代理
有接口的类:JDK动态代理 无接口的类:CGLIB代理
3、Spring通知有哪些类型?
(1)前置通知(Before advice):
(2)返回后通知(After returning advice):
(3)抛出异常后通知(After throwing advice):
(4)后通知(After (finally) advice):
(5)环绕通知(Around Advice):
4、spring的事务传播行为:
REQUIRED:insert update delete
SUPPORTS: select
① PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

② PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。‘

springmvc

1、流程
2、配置web.xml

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring的配置文件名字.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

3、spring.xml

<tx:annotation-driven/> 注解驱动 注意driven
<context:component-scan base-package="service层实现类所在的包"></context:component-scan>

4、springmvc.xml

<mvc:annotation-driven/> 会自动注册下面的映射器和适配器
(RequestMappingHandlerMapping和RequestMappingHandlerAdapter)


<context:component-scan base-package="controller所在的包"></context:component-scan>


<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>

<property name="prefix" value="/WEB-INF/jsp/"/>

<property name="suffix" value=".jsp"/>
</bean>
</beans>

5、映射地址

@Controller
@RequestMapping("/user")
public class HelloJavaContrller {

@RequestMapping("/add")
public ModelAndView hello(){
System.out.println("请求已到达");
//处理
ModelAndView mv=new ModelAndView("index");
return mv;
}
}
映射地址是类级别的地址+方法级别的:/user/add

method={RequestMethod.POST}

6、controller返回值类型
1)ModelAndView
2)String(普通字符串时为视图名字 转发forward: 重定向redirect:)
3)void (request,response) 类似原始servlet
4)json :body返回
7、参数类型
1)基本类型
2)对象类型
3)包装类
4)集合
5)json:body接
8、json的两种形式
{} 表示json对象 【】 表示json数组

8、Restful:路径接
@PathVariable("name")

9、文件上传
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="1024000"/>

</bean>

1)method=post
2)enctype=multipart/form-data
3)MultiparFile
4)<input type="file">
10、拦截器inteceptor
filter inteceptor aop区别

11、事务
1)声明式事务 编程式事务,我们主要用的是声明式事务

声明式事务配置方式

1)注解方式 @Transational 配合<tx:annotation-driven transaction-manager="txManager"/>
2)配置方式(applicationContext.xml里配置通用事务),应用的是spring aop aspect技术。

2)表达式写法

execution(* com.neuedu.service.impl..(..))
3) 事务传播行为
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。(始终在事务中运行)
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

 <!-- get开头的为查询方法 -->
<tx:method name="get*" read-only="true" propagation="SUPPORTS"/>
<!-- add开头的为添加方法 -->
<tx:method name="add*" read-only="false" propagation="REQUIRED"/>
<!-- update开头的为修改方法 -->
<tx:method name="update*" read-only="false" propagation="REQUIRED"/>
<!-- delete开头的为删除方法 -->
<tx:method name="delete*" read-only="false" propagation="REQUIRED"/>

注解

Spring部分

1、声明bean的注解

@Component 组件,没有明确的角色

@Service 在业务逻辑层使用(service层)

@Repository 在数据访问层使用(dao层)

@Controller 在展现层使用,控制器的声明(C)

2、注入bean的注解

@Autowired:由Spring提供
@Resource:由JSR-250提供
@Qulifired :一个接口,有多个实现类时用他指定注入哪一个
3、java配置类相关注解

@Configuration 声明当前类为配置类,相当于xml形式的Spring配置(类上)

@Bean 注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式(方法上)

        @Configuration 声明当前类为配置类,其中内部组合了@Component注解,表明这个类是一个bean(类上)

@ComponentScan 用于对Component进行扫描,相当于xml中的(类上)

4、切面(AOP)相关注解

Spring支持AspectJ的注解式切面编程。

@Aspect 声明一个切面(类上)

使用@After、@Before、@Around定义建言(advice),可直接将拦截规则(切点)作为参数。

@After 在方法执行之后执行(方法上)

@Before 在方法执行之前执行(方法上)

@Around 在方法执行之前与之后执行(方法上)

@PointCut 声明切点

在java配置类中使用@EnableAspectJAutoProxy注解开启Spring对AspectJ代理的支持(类上)

5、@Bean的属性支持
@Scope 设置Spring容器如何新建Bean实例(方法上,得有@Bean)

其设置类型包括:

Singleton (单例,一个Spring容器中只有一个bean实例,默认模式),

Protetype (每次调用新建一个bean),

Request (web项目中,给每个http request新建一个bean),

Session (web项目中,给每个http session新建一个bean),

GlobalSession(给每一个 global http session新建一个Bean实例)

6、@Value注解(强大的注解)
7、事务相关的
@Transactional

SpringMVC部分

@Controller
@RequestMapping 用于映射Web请求,包括访问路径和参数(类或方法上)
@GetMapping
@PostMapping

json相关的
@RestContorller(@Controller+@ResponseBody)
@RequestBody 请求是json
@ResponseBody 响应是json

restful请求相关的
@Pathvariable 用于接收路径参数,比如@RequestMapping(“/hello/{name}”)申明的路径,将注解放在参数中前,即可获取该值,通常作为Restful的接口实现方法。

mybatis
@Select @Insert @Update @Delete

相关文章

  • 框架整理

    一直都有个建立自己知识体系框架的想法,但一是没有刻意去做,另外始终也没有认真的研究如何去做。 近期,在听得到APP...

  • iOS资料链接整理

    资料 关于动画框架的整理(3) 关于动画框架的整理(2) 关于动画框架的整理(1) 动画黄金搭档:CADispla...

  • Android 常用

    常用 文1 1.# android通用流行框架2.# android优秀框架整理2.# android优秀框架整理2

  • 生活框架整理

    不断问自己什么是重要的?什么更重要?什么最重要? 常人基本都被各种琐碎事情推着生活, 而这几个问题常常问问自己, ...

  • 框架的整理

    谢谢不读财报就出局,对以上指标的整理,对这几天学的大框架有了一定的认识

  • 前端框架整理

    jqueryEasyUI下载地址:http://www.jeasyui.net/esayui是我用过的比较全面的O...

  • 运营框架整理

    分享一下最近整理的一个运营框架 对于一个平台来说,最关键要明确定位、目的、针对人群,当这些工作确定后,运营要做的,...

  • #练习#:框架整理

  • SpringCloud 框架整理

    ServiceFrameSpringCloud基础框架工程,集成eureka、zipkin、config、hyst...

  • runtime 框架整理

    runtime初探 runtime C C++ 汇编写成的APIOC 运行时 legacy Version 早期版...

网友评论

      本文标题:三大框架整理

      本文链接:https://www.haomeiwen.com/subject/mrrdwhtx.html