一、第一种方式
- 创建配置类
@Configuration
public class SqlSessionFactoryConfig {
@Autowired
DataSource dataSource;
@Bean
@Primary
public SqlSessionFactory sqlSession() {
SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
try {
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));//设置对应的xml文件地址
} catch (IOException e1) {
e1.printStackTrace();
}
sqlSessionFactoryBean.setDataSource(dataSource);
SqlSessionFactory factory=null;
try {
factory = sqlSessionFactoryBean.getObject();
} catch (Exception e) {
e.printStackTrace();
}
return factory;
}
}
- 注入
SqlSessionFactory
@Service
public class TestService {
@Autowired
SqlSessionFactory factory;
public List<Map> queryStudentsLimite(int i) {
String sqlid="com.a.test.dao.TestDao.queryStudentsLimite";//xml文件中的namespace+语句对应的ID
SqlSession session=factory.openSession();
List<Map> list=session.selectList(sqlid, i);
return list;
}
}
二、第二种方式
@Component
public abstract class AbstractDaoImpl extends SqlSessionDaoSupport {
private static SqlSessionFactory sqlSessionFactory;
@Autowired
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
super.setSqlSessionFactory(sqlSessionFactory);
}
public SqlSessionFactory getSqlSessionFactory() {
return this.sqlSessionFactory;
}
}
子类继承 SqlSessionDaoSupport
可以通过 getSqlSessionFactory
获取到 SqlSessionFactory
重点:AbstractDaoImpl
的最底层的子类必须标记 @Component