简介
于Hibernate不同,mybatis集成Spring,也保留了自己的配置文件
myBatis的配置文件
1.用<settting>
设置配置的属性
比如:延迟加载的配置项
2.用<typeAliases>
给非domain设置别名 (domain类的别名在Spring配置文件中设置)
比如:给第三方二级缓存配置别名
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="key" value="value"/>
</settings>
<!-- 为类型添加别名 -->
<typeAliases>
<typeAlias type="全名" alias="别名"/>
</typeAliases>
</configuration>
Spring的配置文件
1.开头
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
2.打开注解
<!-- annotation -->
<!--autowired的注解-->
<context:annotation-config/>
<!--切面编程的注解-->
<aop:aspectj-autoproxy/>
<!--dao,service,action的注解-->
<context:component-scan base-package="com.lwf.mybatis.hallo"/>
3.配置连接池
<!-- dataSource -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<context:property-placeholder location="classpath:db.properies"/>
db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql:///jdbc
db.password=admin
db.username=root
4.配置sqlSessionFactory
- 注入连接池bean对象
- domain类的别名设置.(给的值是包名,则包内所有类都有别名)
- 映射文件地址
- 配置文件地址
<!-- sessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- domain类别名的配置信息 -->
<property name="typeAliasesPackage" value="com.lwf.mybatis.hallo"/>
<!-- 映射文件地址 -->
<property name="mapperLocations" value="classpath:com/lwf/mybatis/hallo/*Mapper.xml"/>
<!-- mybatis的配置文件地址 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
5.事务管理
- 与Hibernate不同,myBatis用的是jdbc的事务管理
<!-- Transaction -->
<!-- 事务管理员 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 通知 -->
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" read-only="true"/>
<tx:method name="list*" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
<!-- 织入切面 -->
<aop:config>
<aop:pointcut expression="execution(* com.lwf.mybatis.hallo..*Service.*(..))" id="pc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
6.注入mapper的bean.
- 方式1,直接手动注入.使用MapperFactoryBean,生成代理对象
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="mapper接口全限名"/>
</bean>
方式2,扫描方式注入
<!--声明需要扫描的包--> <context:component-scan base-package="mapper接口所在的包"/> <!--注入是mapper接口的bean--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.lwf.mybatis.hallo"/> </bean>