Mybatis整合
ssm角色扮演
ss:
两个容器 springmvc 和spring
springioc是springmvcioc容器的父容器 setParent(root)连接点
springmvc可以引用spring的bena
加载双方的容器 contextloaderlistener spring
dispatcherservlet springmvc
ssm:
其实就是sm的整合,spring+mybatis
我们只需要在业务层拿到mapper,把其余的东西都交给springioc就行
ssm整合:
步骤一:导包
spring:
ioc|di core context beans expression
test
aop cglib spring-aop spring-aspects aopaliance aspectsjweaver
tx tx spring-jdbc
web servlet-api jsp-api jstl web webmvc
json:fastjackson,fileupload,io
mybatis: mysql datasource(c3p0),pageheilper ehcache-core mybatis-ehcache
mybatis-spring
写配置文件
配置一,mybatis-config.xml
- settings标签配置
- typealiases别名
- 分页插件
配置二 applicationContext-mvc.xml配置
还是原来的东西,因为mybatis和dao层没有直接接触
扫描controller
<context:component-scan base-package="com.it" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"></context:include-filter> </context:component-scan>
开启注解
<!--开启注解--> <mvc:annotation-driven/>
handlerMapping、handleradapter
<!--mapping--> <mvc:default-servlet-handler/>
视图解析器
<!--师徒解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/html/"/> <property name="suffix" value=".html"></property> </bean>
文件上传
<!--文件上传--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> </bean>
跨域
<mvc:cors> <mvc:mapping path="/**" allowed-origins="*" allowed-methods="POST, GET, OPTIONS, DELETE, PUT,PATCH" allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With" allow-credentials="true" /> </mvc:cors>
配置三 applicationContext-service.xml
此处只配置service层相关的东西,
扫描service包
<context:component-scan base-package="com.it.service"/>
事务管理器
<!--管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>
增强方法限定
<!--增强规定--> <tx:advice id="advice" transaction-manager="transactionManager"> <tx:attributes> <!--dql --> <tx:method name="find*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="true"/> <tx:method name="select*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="true"/> <tx:method name="query*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="true"/> <tx:method name="search*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="true"/> <tx:method name="have*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="true"/> <!--dml--> <tx:method name="insert*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="false"/> <tx:method name="add*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="false"/> <tx:method name="post*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="false"/> <tx:method name="save*" isolation="READ_COMMITTED" timeout="30" propagation="SUPPORTS" read-only="false"/> <!--跟新--> <tx:method name="update*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="modify*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="change*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="flush*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <!--shanchu--> <tx:method name="delete*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="drop*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="remove*" isolation="READ_COMMITTED" timeout="30" propagation="REQUIRED" read-only="false"/> <tx:method name="*" isolation="READ_COMMITTED"/> </tx:attributes> </tx:advice>
切面配置
<!--切面--> <aop:config> <aop:pointcut id="pc" expression="execution(* com..service.impl.*Impl.*(..))"></aop:pointcut> <aop:advisor advice-ref="advice" pointcut-ref="pc"/> </aop:config>
最后一个喽 步骤四applicationContext-mapper.xml配置
一:引入数据库配置文件
<context:property-placeholder location="classpath:db.properties"/>
二: 数据库连接池以及引入配置
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driver}"></property> <property name="jdbcUrl" value="${jdbc.url}"></property> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"></property> </bean>
三:sqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean>
四扫描mapper
<!--扫描所有mapper--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <property name="basePackage" value="com.it.mapper"></property> </bean>