ssm 配置环境详解

来源:互联网 发布:顾客数据库 编辑:程序博客网 时间:2024/05/29 05:54

首先描叙下mybatis的sqlMapconf.xml

参考文档:点击打开链接

一:SqlMapConfig.xml配置文件的内容和配置顺序如下

  1. properties(属性)
  2. settings(全局配置参数)
  3. typeAiases(类型别名)
  4. typeHandlers(类型处理器)
  5. objectFactory(对象工厂)
  6. plugins(插件)
  7. environments(环境集合属性对象)mappers(映射器)
    1. environment(环境子属性对象)
    2. transactionManager(事物管理)
    3. datesource(数据源
  8. mappers(映射器)

基本文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration></configuration>
配置的参数如下
properties(属性)
<!-- 加载数据库连接参数配置文件 -->
<properties resource="db.properties" />
setting(全局配置参数)
<!-- 二级缓存-->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/></settings>
typeAliases(别名)
<typeAliases></typeAliases>
两种方式
第一种 ,单个别名定义
  <!-- 单个别名定义
type:pojo的路径 
alias:别名的名称
-->
<typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> 
第二种,包下别名定义
<!-- 批量别名定义
name:指定包名,将包下边的所有pojo定义别名 ,别名为类名(首字母大写或小写都行)
-->
<package name="cn.itcast.mybatis.po"/>
typeHandlers(类型处理器)
mybatis通过typeHandlers完成jdbc类型和java类型的转换

objectFactory(对象工厂)

puluins(插件)

environments(环境集合属性对象
<environments default="development">
<environment id="development">
  <!--使用jdbc事务管理,事务控制有mybatis管理-->
<transactionManager type="JDBC" />
   <!--数据库连接池,由mybatis管理-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>

</dataSource>
</environment>
</environments>
mappers(映射器)

6.1:通过resource加载单个映射文件

复制代码
<!-- 加载映射文件 -->    <mappers>    <!--通过resource方法一次加载一个映射文件  -->        <mapper resource="sqlmap/User.xml"/>        <mapper resource="mapper/UserMapper.xml"/>    </mappers>
复制代码

6.2:通过mapper接口加载单个映射文件(一下必须是动态代理)

    <!-- 通过mapper接口加载单个映射配置文件            遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;            上边规范的前提是:使用的是mapper代理方法;      -->         <mapper class="com.mybatis.mapper.UserMapper"/> 

按照上边的规范,将mapper.javamapper.xml放在一个目录 ,且同名。

6.3:批量加载mapper(推荐使用)

    <!-- 批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载        遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;            上边规范的前提是:使用的是mapper代理方法;      -->    <package name="com.mybatis.mapper"/> 

动态代理mapper文件有如下要求
1、在mapper.xml中将namespace设置为mapper.java的全限定名
2、将mapper.java接口的方法名和mapper.xml中statement的id保持一致。
3、将mapper.java接口的方法输入参数类型和mapper.xml中statement的parameterType保持一致
4、将mapper.java接口的方法输出 结果类型和mapper.xml中statement的resultType保持一致 

下面开始mybatis和spring整合后有哪些改变
整合时可以彻底抛弃mybatis了,spring如何取代mybatis的配置呢
由两部分组成
(1)创建两个对象,一个bean 是sqlSessionFactory ,org.mybatis.spring.SqlSessionFactoryBean
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<!--引入sqlmapconfig配置-->
<!-- 配置SqlMapConfig.xml -->
<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"/>
<!--也可以不映入,通过如下配置。-->
<!--别名  -->
<property name="typeAliasesPackage" value="jsu.java.jquery.core.bean,jsu.java.core.query"/>
<!--扫包-->
  <property name="mapperLocations" value="classpath:jsu/java/core/*.xml"/> 


</bean>

(2)扫包(如果在sqlMapconfig.xml配置了扫包,可以不配置这个)
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 会话工厂,这个配置可写可不写,但是如果使用了一个以上的datasource,自动装配可能会失效,那么就需要配置sqlsessionfactory了。 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
  <!-- 扫描包路径 
  多个包中间用半角逗号分隔
   -->
<property name="basePackage" value="cn.itcast.ssm.dao.mapper"/>
</bean>
(3)如果dao层运用的不是动态代理,此处还应配置dao层对象。
(4)整合后mybatis的事物管理由spring的事物管理器管理
<!-- spring 事务 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启事务注解 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

总结

mybaits和spring整合后 sqlSessionFactoryBean由spring创建

数据库连接池由 c3p0提供

事物管理 由spring提供的事物管理器管理

sqlsessionfactory的理解
SqlSessionFactory是一个sql会话工厂,在这个工厂里面取得一个sqlSession会话丢给客户端使用,

sqlSession用于执行持久化操作的对象,类似于jdbc中的Connection。


接下来讲解springmvc的配置

一个中心:(不需要开发

DispatcherServlet前端控制器

三个组件:不需要开发

 处理器映射器

处理器适配器

视图解析器

Handler(需要开发)

处理器,理解成action

View

需要开发页面:jsp

如上所序

一个中心和三个处理器不需要开发,那必定是需要我们配置的,其实springmvc的配置文件就是配置,三个组件就ok了

一个中心不需要我们配置

其中处理器映射器处理器适配器

用<mvc:annotation-driven />

视图解析器

<!-- jsp视图 -->
<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/front_page/"/>
<property name="suffix" value=".jsp"/>
</bean>


下面我在讲讲spring的配置

其实spring的配置就是将我们写的类创建对象。

有两种方式一种是注解

注解的配置

<!-- springmvc 扫包  @Controller @Service  .....-->
<context:component-scan base-package="cn.itcast" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>

这个配置use-default-filters默认值为true,标识扫描@Component, @Repository, 
 @Service, or @Controller 等,

当为false时,表示都不扫描,于是下面配置放行的注解  

<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>

这个表示扫描注解为@controller的类


<context:component-scan base-package="cn.itcast" />

这个由于use-default-filters默认值为true,所以会扫描cn.itcast下所有的注解


如果不通过注解,那么就需要通过bean一个个配置,这里就不说了


下面讲讲拦截器的配置


动态代理的配置



1 0
原创粉丝点击