Hi,
First I'd make my SqlMap class extends SqlMapClientDaoSupport from Spring since
it will relieve you of writing a try-catch block.
public List<Product> getProductList() throws DataAccessException {
logger.info("Getting products! (iBatis)");
List<Product> allProducts = queryForList("selectAllProducts");
return allProducts;
}
Second, I'd handle transaction in a service class.
@Service
Public class ProductService {
@Autowired
ProductDao productDao;
-- Transaction managed by Spring.
@Transactional
public List<Product> getProductList() throws DataAccessException {
return productDao.getProductList();
}
}
This works if you use annotations in Spring. (See annotations in section 3.11
and transaction in section 9.5)
Christian
-----Original Message-----
From: Daniel Guido [mailto:[EMAIL PROTECTED]
Sent: Friday, June 27, 2008 4:50 PM
To: [email protected]
Subject: beginner spring+ibatis help
I'm a student and my grasp of JSP/J2EE, iBatis, and Spring is a little iffy.
I'm attempting to learn all of them as part of a project and I'd appreciate any
help you could offer me (and to save time, yes, I've read the developer's guide
pdf).
I followed the Spring tutorial to create their little inventory management
demo-app. It works fine with JDBC and HSQL and I mostly understand what's going
on. The URL for that tutorial is here:
http://static.springframework.org/docs/Spring-MVC-step-by-step/
Now I'm trying to replace the JDBC DAO with an iBatis DAO. I think I've got
everything put together correctly, but my ProductDao (the parent class to my
SqlMapProductDao) has a method: public List<Product> getProductList(); It was
created in this step of the
tutorial:
http://static.springframework.org/docs/Spring-MVC-step-by-step/part5.html#step5.4
How do I create an equivalent function in the SqlMapProductDao? I made a sql
map that looks like this (my columns and properties match, no need for result
maps):
<select id="selectAllProducts" resultMap="ProductResult">
select * from products
</select>
The following is _completely_ wrong but at least shows what I'd like it to do:
public List<Product> getProductList() throws DataAccessException {
logger.info("Getting products! (iBatis)");
this.sqlMapClient.startTransaction();
try {
List<Product> allProducts =
this.sqlMapClient.queryForList("selectAllProducts");
return allProducts;
}
catch (SQLException ex) {}
this.sqlMapClient.commitTransaction();
}
based off this:
http://static.springframework.org/spring/docs/2.5.x/reference/orm.html#orm-ibatis-straight
Can anyone help? I can post more of the source I'm working with if you think it
will help. Thanks.
--
Dan Guido