要在Spring中使用MyBatis,需要在Spring的配置文件中定义一些类 SqlSessionFactoryBean 为整合应用提供SqlSession对象资源 SqlSessionTemplate 负责管理MyBatis的SqlSession,调用SQL映射语句,实现对数据库的访问 MapperFactoryBean 根据指定Mapper接口生成Bean实例 MapperScannerConfigurer 根据指定包批量扫描Mapper接口并生成实例
首先第一步在applicationContext.xml配置文件编写如下代码
把原本在mybatis-config.xml中的配置连接数据库标签就可以去掉了
和创建工厂的类也可以删掉
<!-- 扫描配置, java中的注解信息 -->
<context:component-scan base-package="com.zb" />
<!-- 数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db"></property>
<property name="username" value="root"></property>
<property name="password" value="ok"></property>
</bean>
<!-- 连接工厂 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:mybatis-config.xml"></property>
</bean>
<!-- dao下的接口是不是要实例化对象,spring下的这个mapperScanner 帮完成实例对象
MapperScannerConfigurer:new完接口的对象之后,会存储到spring上下文中Context
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入连接工厂
sqlSessionFactory.openSession();
session.getMapper()
-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
<!-- 告诉mapperScanner dao具体的包在哪里 -->
<property name="basePackage" value="com.zb.dao" />
</bean>
第二步在业务逻辑类写注解
package com.hhb.serivce.Impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hhb.dao.CarMapper;
import com.hhb.entity.Car;
import com.hhb.serivce.CarSerivce;
@Service
public class CarSerivceImpl implements CarSerivce {
@Autowired
private CarMapper ca;
@Override
public List<Car> getCar() {
// TODO Auto-generated method stub
return ca.getCar();
}
@Override
public boolean add(Car c) {
// TODO Auto-generated method stub
return ca.add(c)==1;
}
}
当然这并不完整只是告诉大家需要更改那些地方