Spring整合mybatis:
整合目的:不需要繁琐的创建SqlSessionFactory等,而只需要能够将DAO代理对象注入到Service对象调用方法即可。
所以我们需要:编写spring-mybatis配置类
三个作用:
1:dataSource 配置数据源
2:sqlSessionFactory配置工厂,加载数据源
3:配置MapperScannerConfigurer
MapperScannerConfigurer类似于component-scan,能够扫描Component等进行注入,但是区别在于,他会将扫描的接口全部创建为MapperFactoryBean。
MapperFactoryBean会结合SqlSessionFactory创建代理类并且实现UserMapper 接口,从而能够进行数据库操作
注入和代理
注意:如果是无配置文件的实现方式,可以直接利用MapperScannerConfigurer扫描
@Repository
public interface ProjectDao {
/**获取所有项目信息*/
@Select("select * from tms_projects")
List<Project> findObjects();
而如果是配置文件型,两种方法
1:MapperScannerConfigurer扫描:配置文件和@Repository接口在同一包下且名字必须相同
2:需要在sqlSessionFactory进行配置,利用Factory扫描配置类
<property name="mapperLocations" >
<list>
<value>classpath:cn/tedu/ttms/*/dao/*.xml</value>
</list>
</property>
并且,如果使用maven,会默认忽视所有xml文件,所以还需要在pom.xml中配置
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
原理:
WEB-INF/classes:java,resources里的源码打包进入和编译后的class文件
原来方式:但是仅仅会打包Java下的.java文件和resources里的所有文件,而.xml等文件会自动忽略。
目的:有时候,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。设置如上
注意点:
1:如果build中设置了打包方式,那么原来方式就