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: user-java@ibatis.apache.org
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

Reply via email to