1.mybatis核心文件
<?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>
<typeAliases>
<package name="com.cpo.pojo"/>
</typeAliases>
<!-- 配置 mybatis 多套运行环境,通过 default 属性选择一套运行环境 -->
<!--<environments default="development">-->
<!--<!–开发环境–>-->
<!--<environment id="development">-->
<!--<!– 配置事务管理,采用 JDBC 的事务管理 –>-->
<!--<transactionManager type="JDBC"></transactionManager>-->
<!--<!– POOLED:mybatis 自带的数据源,JNDI:基于 Tomcat 的数据源 –>-->
<!--<dataSource type="POOLED">-->
<!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
<!--<property name="url" value="jdbc:mysql://localhost:3306/mydata?useUnicode=true"/>-->
<!--<property name="username" value="root"/>-->
<!--<property name="password" value="123456"/>-->
<!--</dataSource>-->
<!--</environment>-->
<!--</environments>-->
<!--<mappers>-->
<!--<mapper class="com.cpo.mapper.UserMapper"/>-->
<!--</mappers>-->
</configuration>
1.1 typeAliases别名设置
1.2 properties数据源引用
1.3 settings设置
-
元素设置
<settings> <setting name="cacheEnabled" value="true"/> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
连接地址:https://mybatis.org/mybatis-3/zh/configuration.html#settings
-
日志 logImpl
SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING
2.spring整合mybatis
2.1 创建dataSource
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydata?useUnicode=true&characterEncoding=utf-8&useSSL=false"/>
<property name="username" value="root"/>
<property name="password" value="123@cP"/>
</bean>
2.2 设置sqlSessionFactor
<bean id="sqlSessionFactor" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/cpo/mapper/*.xml"/>
</bean>
-
整合mybatis核心文件
<property name="configLocation" value="classpath:mybatis-config.xml"/>
-
注册mapper
<property name="mapperLocations" value="classpath:com/cpo/mapper/*.xml"/>
2.3 设置sqlSession
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactor"/>
</bean>
2.4 sqlSession使用
-
方式一:手动注入
public class UserServiceImpl implements UserService { private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) { this.sqlSession = sqlSession; } public List<User> selectUsers() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.seleteUsers(); } }
<bean id="userService" class="com.cpo.service.UserServiceImpl"> <property name="sqlSession" ref="sqlSession"/> </bean>
-
方式二:自动注入
public class UserServiceImpl implements UserService { @Autowired private SqlSessionTemplate sqlSession; public List<User> selectUsers() { UserMapper mapper = sqlSession.getMapper(UserMapper.class); return mapper.seleteUsers(); } }
<bean id="userService" class="com.cpo.service.UserServiceImpl"> </bean>
-
方式三:继承SqlSessionDaoSupport
public class UserServiceImpl2 extends SqlSessionDaoSupport implements UserService { public List<User> selectUsers() { UserMapper mapper = getSqlSession().getMapper(UserMapper.class); return mapper.seleteUsers(); } }
<bean id="userService2" class="com.cpo.service.UserServiceImpl2"> <property name="sqlSessionFactory" ref="sqlSessionFactor"/> </bean>
3.spring接管mybatis事务
3.1 事务管理器
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<constructor-arg ref="dataSource"/>
</bean>
3.2 事务切面
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add" propagation="REQUIRED"/>
<tx:method name="select" read-only="true"/>
<tx:method name="*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>
3.3 事务切点
<aop:config>
<aop:pointcut id="txPointcut" expression="execution(* com.cpo.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>