1.MyBatis和Spring的集成工作是由MyBatis团队完成的
A.SqlSessionFactoryBean
B.MapperFactoryBean(用的频率较少)
C.MapperScannerConfigurer
在需要被扫描的mapper接口上添加注解
设置annotationClass属性
MyBatis会自动扫描com.zr包下的所有接口,遇到带MyBatisMapper注解标记的将自动被MapperFactoryBean当做Mapper组件注册
2.spring与MyBatis整合
A.配置db.properties提供数据库连接的基本数据
B.spring-db.xml文件配置数据库连接
配置数据库连接池、配置SqlSessionFactoryBean、 配置SqlSessionFactory、配置Mapper扫描
spring-db.xml
<!-- 整合spring 和 mybatis --> <!-- 1.配置数据源 --> <util:properties id="props" location="classpath:db.properties"></util:properties> <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="#{props.driver}"></property> <property name="url" value="#{props.url}"></property> <property name="username" value="#{props.username}"></property> <property name="password" value="#{props.password}"></property> <!-- 初始化连接数、最小、最大连接数设置 --> <property name="initialSize" value="1"></property> <property name="minIdle" value="1"></property> <property name="maxActive" value="20"></property> <!-- 连接的等待超时 --> <property name="maxWait" value="60000"></property> <!-- 自动扫描 关闭空闲连接 --> <property name="timeBetweenEvictionRunsMillis" value="60000"></property> <!-- 设置最小生存时间 --> <property name="minEvictableIdleTimeMillis" value="30000"></property> </bean> <!-- 2.配置 SqlSessionFactoryBean 该bean是spring用来生产SqlSession(sql会话)对象的工厂 替代mybatis原来sqlSessionFactory,id建议使用sqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 数据源 --> <property name="dataSource" ref="ds"></property> <!-- 设置读取mybatis主配置文件 该配置可以设置也可以不设 --> <!-- <property name="configLocation" value="classpath:mybatis-config.xml"></property> --> <!-- 以属性配置的方式 替代原有的mybatis主配置文件的设置 --> <!-- 设置别名 --> <property name="typeAliasesPackage" value="com.rong.entity"></property> <!-- 设置引入哪些 mapper映射配置文件 --> <property name="mapperLocations" value="classpath:com/rong/dao/*.xml"></property> </bean> <!-- 3.配置 Mapper接口的代理类的创建工厂 MapperFactoryBean或MapperScannerConfigurer --> <!-- <bean id="mapperFactoryBean" class="org.mybatis.spring.mapper.MapperFactoryBean"> 指定会话工厂 <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 指定哪些mapper接口 需要创建代理子类 <property name="mapperInterface" value="com.rong.dao.PrivilegeMapper"></property> </bean> --> <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 指定持久化层的需要生成代理子类对象的 包的位置 --> <property name="basePackage" value="com.rong.dao"></property> <!-- 指定会话工厂 可以省略,spring会自动的通过Autoware(自动装配)进行注入--> <!-- <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> --> <!--过滤生成动态代理类的步骤: 1.设置自定义注解 2.在需要生成代理子类的mapper接口上添加注解 --> <property name="annotationClass" value="com.rong.annotation.MyBatisAnnotation"></property> </bean>
3.SSM整合
A.配置web.xml(spring-mvc配置)
B.spring-mvc.xml
C.spring-tx.xml
<!-- 开启ssm的事务支持 所有原底层api的自动提交会失效 --> <!-- 1.配置事务管理器 --> <bean id="tx" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 配置事务管理器的数据源属性 --> <property name="dataSource" ref="ds"></property> </bean> <!-- 2.配置事务管理策略 --> <tx:advice id="txAdvice" transaction-manager="tx"> <tx:attributes> <tx:method name="find*" propagation="REQUIRED" read-only="true"/> <!-- <tx:method name="select*" propagation="REQUIRED" read-only="true"/> --> <tx:method name="*" propagation="REQUIRED" read-only="false" rollback-for="Exception"/> </tx:attributes> </tx:advice> <!-- 3.配置事务管理切面配置 事务从服务层开始控制 --> <aop:config proxy-target-class="true"> <aop:advisor advice-ref="txAdvice" pointcut="within(com.rong.service.*)"/> </aop:config>
D.spring-db.xml(SM整合)
E.spring-ssm.xml
<!-- 引入其他 配置xml文件 按照不同的功能划分xml配置文件--> <import resource="spring-db.xml"/> <import resource="spring-mvc.xml"/> <import resource="spring-tx.xml"/>
F.entity、dao、service、controller实现