1.1 導入jar包:java
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.7</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.43</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- 引入dbcp鏈接池 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.8</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.8</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.7</version> </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>3.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.0</version> </dependency> <!-- 加入ehcache緩存包 --> <dependency> <groupId>org.ehcache</groupId> <artifactId>ehcache</artifactId> <version>3.4.0</version> </dependency> <!-- mybatis與ehcache真核包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.8.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.3.8.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.8.RELEASE</version> </dependency> </dependencies>
1.2 加入必要的配置文件以下(和工程目錄結構):mysql
1.3 建立pojo類 ,dao接口(如上圖),spring
1.4 建立UserMapper.xml文件 (在sqlMap文件夾中)sql
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 用原始dao開發 namespace能夠隨意配置 --> <mapper namespace="test"> <select id="selectUserById" parameterType="Integer" resultType="User"> select * from User WHERE id=#{id} </select> </mapper>
1.5 配置mybatis的配置文件(sqlMapConfig.xml)apache
<?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.shi.pojo"/> </typeAliases> <mappers> <mapper resource="sqlMap/UserMapper.xml"/> </mappers> </configuration>
1.6 配置spring的配置文件 (applicationContext.xml)api
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 1 加載資源文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 2 配置數據源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <property name="maxActive" value="10"></property> <property name="maxIdle" value="5"></property> </bean> <!-- 3 配置sqlSessionFactory會話工廠(在整合包中) --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 3.1 加載mybatis的配置文件 --> <property name="configLocation" value="mybatis/sqlMapConfig.xml"></property> <!-- 3.2 加載數據源 --> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 4 用原始dao開發時須要配置 dao bean --> <bean id="userDao" class="com.shi.dao.UserDaoImp"> <!-- 由於繼承了sqlSessionDaoSupport類 因此要把sqlSessionFactory注入進去 --> <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> </bean> </beans>
1.7 配置 UserDaoImp的實現類spring-mvc
package com.shi.dao; import org.apache.ibatis.session.SqlSession; import org.mybatis.spring.support.SqlSessionDaoSupport; import com.shi.pojo.User; /** * 這裏繼承SqlSessionDaoSupport 能夠爲咱們自動生成sqlSession * @author SHF * */ public class UserDaoImp extends SqlSessionDaoSupport implements UserDao { public User selectUserById(Integer id) throws Exception { SqlSession sqlSession=this.getSqlSession();//從繼承中獲取會話 User user=sqlSession.selectOne("test.selectUserById", id); return user; } }
1.8 編寫測試類緩存
import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.shi.dao.UserDao; import com.shi.pojo.User; public class UserDaoTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext-dao.xml"); } @Test public void test() throws Exception { UserDao userDao=(UserDao) applicationContext.getBean("userDao"); User user=userDao.selectUserById(1); System.out.println(user); } }
2.1.mapper.xml文件session
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace:必須是和mapper.java的相對路徑 --> <mapper namespace="com.shi.mapper.UserMapper"> <!-- 開啓本namespace的二級緩存 --> <cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache> <select id="selectUserById" parameterType="Integer" resultType="User"> select * from User WHERE id=#{id} </select> </mapper>
2.2.mapper.java 接口mybatis
package com.shi.mapper; import java.util.List; import com.shi.pojo.User; public interface UserMapper { /** * 操做user的mapper的接口 * @param id * @return * @throws Exception */ public User selectUserById(Integer id)throws Exception; }
2.3 applicationContext-dao.xml文件
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 1 加載資源文件 --> <context:property-placeholder location="classpath:db.properties"/> <!-- 2 配置數據源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"></property> <property name="maxActive" value="10"></property> <property name="maxIdle" value="5"></property> </bean> <!-- 3 配置sqlSessionFactory會話工廠(在整合包中) --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 3.1 加載mybatis的配置文件 --> <property name="configLocation" value="mybatis/sqlMapConfig.xml"></property> <!-- 3.2 加載數據源 --> <property name="dataSource" ref="dataSource"></property> **<!-- 若是要想mapper.java和mapper.xml文件所在位置不同 要加上這個配置 --> <!-- <property name="mapperLocations" value="classpath:mybatis/mappings/**/*.xml" /> -->** </bean> <!-- 5 使用mapper代理的開發方法 (自動掃描該包下的全部接口自動生成其實現類) **要求**:mapper.java和mapper.xml文件必須在同一個包下面,而且名字一致 掃描出來的mapper的bean的名字 是 mapper類名的首字符小寫 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- basePackage:指定掃描的包名。 --> <property name="basePackage" value="com.shi.mapper"></property> <!-- **sqlSessionFactoryBeanName **必定要配置成這個 若是配置成sqlSessionFactory 那麼上面的加載資源文件將 不執行(或後執行) --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> </beans>
2.4測試方法同上