VRaptor + Ireport + Ibatis

Olá tudo bem?
Gostaria de saber se existe alguma forma de usar a conexao do Ibatis para criar o relatório sem que eu precise usar uma conexao jdbc a parte no meu model Relatorio…
por exemplo, no meu model está assim

Relatorio.java

package br.empresa.model;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.Map;

import com.ibatis.sqlmap.client.SqlMapClient;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import br.com.caelum.vraptor.interceptor.download.InputStreamDownload;
import br.com.caelum.vraptor.ioc.Component;

@Component  
public class Relatorio {  
  
	private final SqlMapClient sqlMap;
	
    public Relatorio(SqlMapClient sqlMap){  
        super();  
        this.sqlMap = sqlMap;
    }  
  
    public InputStreamDownload buildReport(String jasperFile, Map<String,Object> parametros) throws Exception {  
        jasperFile = "C:\\Oficina\\projeto\\relatorios\\"+jasperFile+".jasper";  

        ByteArrayOutputStream exported = new ByteArrayOutputStream();  
        JRExporter exporter = new JRPdfExporter();
        
        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        Connection conn = DriverManager.getConnection("jdbc:jtds:sqlserver://ip:porta/banco","usuario","senha");
        
        byte[] bytes = null;      
      
        try {  
            JasperPrint print = JasperFillManager.fillReport(jasperFile, parametros, conn);  
      
                exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, exported);  
                exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
                exporter.exportReport();  
  
                bytes = exported.toByteArray();  
  
        } catch (Exception e) {                      
                e.printStackTrace();      
                return null;      
        }  
              
        return new InputStreamDownload(  
                new ByteArrayInputStream(bytes),  
                    "application/pdf",  
                    "teste.pdf",  
                    false,  
                    bytes.length);  
    }  
}  

Esse é meu controller

package br.empresa.controller;

import java.io.File;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;

import org.hibernate.exception.ConstraintViolationException;
import br.empresa.dao.CalendarioDao;
import br.empresa.dao.TipoEventoDao;
import br.empresa.model.CalendarioEvento;
import br.empresa.model.Calendario;
import br.empresa.model.Relatorio;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.interceptor.download.Download;
import br.com.caelum.vraptor.validator.ValidationMessage;

@Resource
public class RelatoriosController {
	private final HttpServletRequest request;
	private final Relatorio relatorio;
	public RelatoriosController(HttpServletRequest request, Relatorio relatorio) {
		super();
		this.request = request;
		this.relatorio = relatorio;
	}

	@Get @Path("/relatorios/professores")
	public void relProfessores(){
		
	}

	@SuppressWarnings("unchecked")
	@Path("/relatorios")
	public Download executaRelatorio() throws Exception{
		Map<String, Object> parametros = new HashMap<String, Object>();	//request.getParameterMap();
		parametros.put("DATA", "20100501");
        return relatorio.buildReport("professoradmissao", parametros); 
	}
}

Ai ta gerando o relatorio normal por deixei chumbado a data no metodo executaRelatorio, mas isso não vem ao caso… o que eu quero mesmo é como melhorar isso que eu fiz?

Obrigado

tente separar a criação da conexão em outro componente e recebê-lo no construtor do relatório