1.在Spring的配置文件当中编写数据源
<!--DataSource数据源:使用Spring的数据源替换Mybatis的配置-->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="333"/>
</bean>
2.编写SqlSessionFactory(可以绑定Mybatis的资源文件:推荐这么操作,这样使得mybatis的配置文件当中代码减少只需要保留一些基础的设置)
<!--SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource" />
<!--绑定Mybatis的配置文件-->
<property name="configLocation" value="classpath:Mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:com/sqx/dao/*.xml"/>
</bean>
3.编写SqlSessionTemplate(等价于SqlSession)
<!--SqlSessionTemplate-->
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><!--构造器注入-->
<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
4.编写Mapper接口的实现类,设置一个属性SqlSessionTemplate的属性和对应的set方法,以及对方法的重写
public class UserMapperImpl implements UserMapper {
private SqlSessionTemplate sqlSession;
//以前我们的操作全在sqlSession中执行,现在全在SqlSessionTemplate当中执行
public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
}
public List<User> queryUsers() {
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
return mapper.queryUsers();
}
}
5.将接口的实现类托管给Spring(注册在Spring的配置文件当中)
<bean id="userMapper" class="com.sqx.dao.UserMapperImpl">
<property name="sqlSession" ref="sqlSession"/>
</bean>
6.测试的时候可以直接调用实现类的方法即可
@Test
public void queryUsersTest(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = context.getBean("userMapper", UserMapper.class);
List<User> userList = userMapper.queryUsers();
for (User user : userList) {
System.out.println(user);
}
}
最后一般是团队合作开发可以把Spring配置文件全部整合到一个配置文件当中即可
总结:这样做尽管多出了一个接口的实现类,但是仍然是利大于弊的,因为使得项目层次更加清晰,也是IOC的思想