须要spring经过方式管理SqlSessionFactory.
spring和mybatis整合生成代理对象,使用SqlSessionFactory建立SqlSession.(Sping和mybati整合自动完成).
持久层的mapper都须要有spring进行管理.java
建立一个新的java工程.spring
mybatis的jar包,spring的jar包
spring和mybatis的整合包
参考:SSM的maven工程的建立sql
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 加载配置文件--> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 数据源,使用dbcp --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <property name="maxActive" value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 加载mybatis的配置文件--> <property name="configLocation" value="mybatis/SqlMapperConfig.xml"/> <property name="dataSource" ref="dataSource"/> </bean> </beans>
其余配置文件的建立apache
applicationContext.xml中的原始dao配置spring-mvc
<!-- 原始dao接口 --> <bean id="userDao" class="club.lemos.ssm.dao.UserDaoImpl"> <property name="sqlSessionFactory" ref="sqlSessionFactory"/> </bean>
测试文件:tomcat
public class UserDaoImplTest { private ApplicationContext applicationContext; @Before public void setUp() throws Exception { //获取spring的配置文件applicationContext.xml,这个配置文件中包含着dbcp数据源的相关配置. //还包含着sqlSessionFactory的生成类SqlSessionFactoryBean.它可让数据源和 sqlMapConfig.xml(配置了mapper的映射文件及mybatis的其余配置信息)相联系. //还有原始的dao接口,这个接口依赖于上面的SqlSessionFactory 那么能够在dao的实现类中能够经过继承SqlSessionDaoSupport来 //获取sqlSessionFactory对象. applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml"); } @Test public void findUserById() throws Exception { //经过spring配置文件,获取userDao对象 UserDao userDao = (UserDao) applicationContext.getBean("userDao"); //调用UserDao的方法 User userById = userDao.findUserById(1); System.out.println(userById); } }
注意事项:mybatis
IntelliJ Idea编译报错:javacTask: 源发行版 1.7 须要目标发行版 1.7
解决办法:选中项目,右击选择Maven–>Reimport, 再次编译,问题解决。mvc
原文:http://blog.csdn.net/wave_1102/article/details/47671019app
或者,可使用:关键是java编译插件。maven
<build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.2</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <pluginManagement> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> </plugin> </plugins> </pluginManagement> </build>
applicationContext.xml中的mapper代理配置
<!--mapper代理配置,由mapper接口生成代理对象.原始dao的方法是根据实现类生成代理对象 --> <!--<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">--> <!--<property name="mapperInterface" value="club.lemos.ssm.mapper.UserMapper"/>--> <!--<property name="sqlSessionFactory" ref="sqlSessionFactory"/>--> <!--</bean>--> <!--自动扫描mapper,其bean对象的id默认为接口名,首字母小写--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 这里不使用sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> <!-- 指定扫描的路径 --> <property name="basePackage" value="club.lemos.ssm"/> </bean>
注意:使用IDEA的maven工具进行开发时,会出现spring代理器没法读取mapper配置文件 XXXMaper.xml的问题—— org.apache.ibatis.binding.BindingException
.
此时,能够尝试手动将其移动到对应接口的类路径下,看看能不能运行。
可是,实际开发中不可能这样作,能够在pom.xml中配置下面这句话:
... <build> <finalName>springmvc-study</finalName> <resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> <resource> <directory>${basedir}/src/main/resources</directory> </resource> </resources> </build> </project>
若是文件已经移动到指定的位置。还报错。那么多是文件自身有问题。好比命名空间不正确。以前就是逆向工程生成的mapping文件的命名空间不正确致使这个问题。
END