SpringMvc容易忘记的东西(仅仅适合自己无参考意义)

- 一.一、二级缓存

1.mybatis一级缓存是一个sqlsession级别,二级缓存是跨sqlsession,是一个mapper级别的缓存,对于mapper级别的缓存不同的sqlSession是可以共享的。
2.mybatis支持一级缓存不需要配置。当执行,修改添加删除的sql时就会自动清空一级缓存sqlsession(防止查出的数据不准确,脏数据),再次查询相同的东西时需要再次访问数据库。对于二级缓存此时会刷新
3.spring和mybatis整合后进行mapper开发,不支持一级缓存,mybatis和spring整合,spring按照mapper的模版去生成mapper代理对象,模版在最后统一关闭一级缓存。
4.开启二级缓存:
需要实现序列化接口,否则抛异常
sqlMapconfig.xml

<settings>
    <setting name="cacheEnabled" value="true">
</settings>
xxxmap.xml
<cache/>
查询步骤:二级缓存->一级缓存->数据库查找
对于变化频率较高的sql我们需要禁用二级缓存
方法:<select id="" resultMap="" useCache="false">
useCache默认为true
刷新缓存
<updata id="" parameterType="" resultType="" flushCache="true">
默认为true所以可以不用配置

springMvc整合(java工程)

dao的impl去extend这个SeqSessionDaoSupport类
1.sqlMapConfig.xml
别名,settings,加载javabean的mapxml
2.applicationContext.xml
数据源连接池,sqlSessionFactory,mapper,dao

<typeAliases>#在configration中不在mapper标签中
    <package name=""/>
</typeAliases>
<mapper>
    <package name=""/>
</mapper>

加载数据源配置文件

<context:property-placeholder location="classpath:db.properties"/>

<bean id="dataSource" class="" destory-method="close">
    <property name="url" value="${}"/>
</bean>

配置sqlSessionFactory,需要数据源和mybatis的配置文件

<bean id="sqlSessionFactory" class="....sqlSessionFactoryBean">
    <property name="datasource" ref="dataSource">
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
</bean>

配置dao

<bean id="dao接口名" class="dao实现类的全类名">
    <property name="sqlSessionFactory" ref="sqlSessionFactory">
</bean>

配置mapper MapperFactoryBean生成动态代理对象(不用这个)

<bean id="" class="....MapperFactoryBean">
    <property name="mapperInterfaceBean" value="xxxmap.xml的包名"/>
    <property name="sqlSessionFactory" ref="sqlSessionFactory">
</bean>

扫描器(没有ID) 上面那个就不用

<bean class="..MapperSacnerConfig">
    <property name="basePackage" value="map的包路径,第二个包,第三个包"/>
    <property name="sqlSession"
</bean>

正式配置

web.xml:
前端控制器:
<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>...DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>这个文件在源码文件夹的根部
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>


spring容器监听器的配置
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/.../applicationContext-xxx.xml或者是....-*.xml通配符方式</param-value>
</context-param>
<listener>
    <listener-class>...contextLoaderListener</listener-class>
</listener>

springmvc.xml

1.handler
<bean name="/xxx.action" class="ItemContriller">
</bean>
2.处理器映射器
<bean class="BeanNameUrlHandlerMapping" />根据url找handler
3.处理器适配器
<bean class="simpleControllerHandlerAdapter">
</bean>
4.视图解析器
<bean class="viewResolver">
    <property name="prefic" value="/WEB-INF/jsp"/>
    <property name="suffix" value=".jsp"/>
</bean>


注解处理器映射器
使用@Controller@requestMapping
组件扫描controller,service,component,repsitory
<context:component-scan base-package=""/>

组合重点

applicationContextDao.xml(数据源,sqlsessionFactory,mapper扫描器)

context:property-placeholder location="classpath:db.properties"/>

<bean id="dataSource" class="" destory-method="close">
    <property name="url" value="${}"/>
</bean>

<bean id="sqlSessionFactory" class="....sqlSessionFactoryBean">
    <property name="datasource" ref="dataSource">
    <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/>
</bean>

<bean class="MapperScanerfigurer">
    <property name="basepackage" value="xxmap.xml的包名"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

applicationContextService.xml

<bean id="" class="service全类名">

springmvc.xml

controller扫描器

mvc注解驱动(可以替代下面处理器映射器和适配器)

注解的映射器

注解的适配器

试图解析器



sqlMapConfig.xml

<typeAliases>
    <package name=""/>
</typeAliases>

applicationContext-transation.xml

使用声明的事务控制可以有效地规范代码
事务管理器(用jdbc的事务管理器)

<bean id="transaction" class="datasourceTransactionmanage">
    <property name="datasource" ref="datasource">
</bean>

通知(对于save,insert..开头的方法增加事务required,其他的查询不进行事务管理用supports和read-only=true表示只读)

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" propagation="required"/>
        <tx:method name="insert*" propagation="required"/>
        <tx:method name="updata*" propagation="required"/>
        <tx:method name="delete*" propagation="required"/>
        <tx:method name="select*" propagation="supports" read-only=true/>
        <tx:method name="select"  propagation="supports" read-only=true/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <aop:advisor advice-ref="txAdvice" 
        pointcut="execution(* cn.itcast.service.impl.*.*(..))"/>impl下的任一方法,不管返回值是什么
</aop:config>
@RequestMapping(value="/...",method=RequestMethod.GET)
也可是一个数组method={RequestMethod.GET,RequestMethod.POSt}

redirect重定向的方式返回

方法的返回值为”redirect:url路径.action”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值