一、总概
配置Mybatis-Spring项目的基本步骤:
1、配置数据源dataSource
2、配置SqlSessionFactory
3、可选配置SqlSessionTemplate,在同时配置SqlSessionFactory和SqlSessionTemplate的情况下, 只有SqlSessionTemplate会生效。
但是SqlSessionTemplate不符合面向对象的程序设计思想,所以不推荐使用。
下面通过注解和xml两种形式分别介绍Mybatis-Spring的基本配置
二、xml文件形式
1、dataSource源的xml配置
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="username" value="root" />
<property name="password" value="123456" />
<property name="driverClass" value="com.mysql.cj.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis_db" />
</bean>
2、SqlSessionFactoryBean的xml配置
<bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-cfg.xml" />
</bean>
3、Mapper接口Bean的xml配置
接口是没办法实例化的,但是Mybatis通过动态代理技术为我们的Mapper接口生成了一个代理对象。在Mybatis-Spring中,通过MapperFactoryBean为我们产生对应的接口实现对象。它有两个属性,分别是mapper接口和SqlSessionFactory。
<bean id="roleMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- 有三个属性,同时配置SqlSessionTemplate和SqlSesssionFactory只有SqlSessionTemplate生效 -->
<property name="mapperInterface" value="com.spring_mybatis.mapper.RoleMapper" />
<property name="SqlSessionFactory" ref="SqlSessionFactory" />
</bean>
通过在Spring的配置文件中简单配置上述所列条目,一个基本的Mybatis-Spring项目就配置完了。
二、更为常用的注解为主,xml为辅形式。
注解更为常用的原因主要有两个: 1、约定优先于配置 2、注解可以减少配置文件冗余
那么什么应该在注解中配置,什么应该在xml文件中配置呢?
具体来讲,像数据源这种第三方类Bean属性又比较多,而且属于公共Bean,在xml文件中配置比较好。
而工程内的数目繁多的Mapper接口则使用注解比较方便,能极大地减少xml配置文件地冗余。
通过MapperScannerConfigurer扫包配置Mapper
这个元素可以配置的属性如图:
markerInterface将需要扫描为Mapper的接口都继承一个标记接口,不利于包的划分所以不推荐,实际上需要配置的也就是basePackage、annotationClass、SqlsessionFactoryBeanName这三个属性就可以不用一个个去配置Mapper造成xml配置文件的冗余
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- basePackage可以配置多个,value里用半角逗号分隔 -->
<property name="basePackage" value="com.spring_mybatis.mapper" />
<property name="sqlSessionFactory" ref="SqlSessionFactory" />
<property name="annotationClass" value="org.springframework.stereotype.Repository" />
</bean>
Mapper用@Respository注解
import org.springframework.stereotype.Repository;
import com.spring_mybatis.pojo.Role;
@Repository
public interface RoleMapper {
public Role findRoleById(Long id);
public void insertRole(Role role);
public void deleteRole(Role role);
public void updateRole(Role role);
}
网友评论