JavaWeb学习笔记-springmvc-10-整合Mybatis

  • spring,将各层进行整合,管理持久层mapper,业务层的service,表现层的handler,进行事务控制
    • 表现层:springmvc,handler调用service
    • 业务层:service接口,service调用mapper接口
    • 持久层:mybatis(dao接口)

第一步:整合持久层(dao)

spring+mybatis,同过spring管理mapper接口
使用mapper的扫描器自动扫描mapper接口在spring中进行注册

第二步:整理service层

通过spring管理service接口
使用配置方式将service接口配置在spring配置文件中
事务控制

整合springmvc

springmvc是spring的一个模块,无缝整合

准备环境

mysql驱动包
mybatis jar包
mybatis+spring整合包
log4j包
dbcp数据库连接池包
spring包
jstl包

log4j.properties

#Clobal logging configuration,建议开发环境使用debug
log4j.rootLogger=DEBUG,stdout
#Consoe output
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc:username=xxx
jdbc:password=xxx

sqlMapConfig.xml

<configuration>
    <!--全局setting配置,根据需要添加-->
    <!--配置别名-->
    <typeAliases>
        <!--批量扫描别名-->
        <package name="xxx.xxx.xxx"/>
    </typeAliases>
    <!--配置mapper
        由于使用spring+mybatis整合包进行mapper扫描,这里不需要配置mapper
        必须遵循:mapper.xml和mapper.java文件同名且在同一目录下
    -->
    <!--<mappers></mappers>-->
</configuration>

applicationContext-dao.xml

<!--加载db.properties文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--数据源-->
<bean id="dataSource" class="org.apache.common.dbcp.BasicDataSource" destory-method="close">
    <property name="dirverClassName" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="maxActive" value="30"/>
    <proeprty name="maxIdle" value="5"/>
</bean>

<!--sqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--数据库连接池-->
    <property name="dataSource" ref="dataSource"/>
    <!--加载mybatis配置文件-->
    <property name="configuration" value="classpath:sqlMapConfig.xml">
</bean>

<!--mapper扫描器-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!--扫描包路径,如果需要扫描多个包,中间使用半角逗号隔开-->
    <proeprty name="basePackage" value="xxx.xxx.xxx.mapper"/>
    <!--name使用sqlSessionFactory,可能导致无法加载db.properties,最终无法连接数据库-->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">
</bean>

逆向工厂生成mapper类以及po类文件
针对综合查询,一般需要关联查询,需要创建自定义mapper

applciaionContext-transaction.xml

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!--数据源-->
    <property name="dataSource" ref="dataSource"/>
</bean>

<!--advice-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <!--事务传播行为-->
        <tx:method name="save*" propagation="REQUIRED"/>
        <tx:method name="delete*" propagation="REQUIRED"/>
        <tx:method name="update*" propagation="REQUIRED"/>
        <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
        <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
        <tx:method name="select*" propagation="SUPPORTS" read-only="true"/>
    </tx:attributes>
</tx:advice>

<!--aop-->
<aop:config>
    <aop:advisor advice-ref="txAdvice" pointcut="exection(* xxx.xxx.servoce.*.*(..))"/>
</aop:config>

springmvc.xml

参考前面

加载spring容器

建议使用通配符
web.xml

<!--加载spring容器-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>applicationContext-*.xml</param-value>
</context-param>

猜你喜欢

转载自blog.csdn.net/weixin0605/article/details/80795014
今日推荐