Spring整合Mybatis

1、在pom文件中配置需要依赖的jar

2、搭建环境,创建dao和 实体类书写三个配置文件
目录结构如图所示:


3、jdbc.properties配置:

driverName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/项目名
username=root
password=123456

4、spring-mybtais.xml配置有

<!-- 第一步:引入properties配置文件,用util标签不要忘了配置头文件-->
<util:properties id="prop" location="jdbc.properties"></util:properties>
<!--第二步: 数据源配置-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="#{prop.driverName}"/>
<property name="url" value="#{prop.url}"/>
<property name="username" value="#{prop.username}"/>
<property name="password" value="#{prop.password}"/>
</bean>
<!--第三步: 通过Spring 来获取sqlSessionFactory实例,让Spring根据该工出厂实例获取sqlSession -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置连接数据库数据源,ref的值 和上面相对应-->
<property name="dataSource" ref="dataSource"/>
<!--配置mapper文件所在位置-->
<property name="mapperLocations" value="classpath:/mapper/*Mapper.xml"/>
</bean>

<!--第四步 生成单个代理对象 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
<property name="mapperInterface" value="cn.mybatis.dao.IUserDao" /> <property 
name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

注意 这样子使用有一个问题 就是每次创建一个代理对象就要写一次

<!-- 第五步: 再将sqlsessionTemplate的bean实例通过注解扫描的方式注入到service实现类中 -->
<context:component-scan base-package="cn.mybatis.service"/>

5、Service的实现类:

@Service("userService1")
public class UserServiceImpl1 implements UserService{
@Autowired
private UserDAO userDAO;
public UserBean getUserById(String userId) {
UserBean userBean=userDAO.findUserById("1001");
return userBean;
}
}

SqlSessionFactoryBean的简介
通过SqlSessionFactoryBean 还可以定义一些属性来指定Mybatis 框架的配置信息,常用属性如下:
1、dataSource 指定连接数据库的数据源(必要属性);
2、mapperLocations 指定Mapper.xml文件的位置
3、configLocation 用来指定Mybatis的配置文件的位置,如果指定该属性,则会以该配置文件内容来构建对应的SQLSessionFactoryBuilder。
4、typeAliasesPackage 用来给包中的类注册别名,注册后可以直接使用类名,而不用使用全限定的类名(就是不用包含包名)。

MapperScannerConfigurer配置
使用MapperFactoryBean时,也有一个缺点,就是有一个DAO组件就需要在配置文件定义一个相对应的MapperFactoryBean,但是在实际开发中多个功能模块儿是需要多个DAO组件的,所以使用MapperFactoryBean会使配置文件变的繁琐,此时我们可以使用MapperScannerConfigurer组件批量扫描指定包下所有DAO。

<!--使用该组件时,只需要指定一个basePackage,多个包之间可以用分号隔开-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.gok.dao"/>
</bean>

提示:SqlSessionFactoryBean可以不指定,会以Autowired方式注入

原文地址:https://www.cnblogs.com/ericz2j/p/11109183.html