Chinaunix首页 | 论坛 | 博客
  • 博客访问: 636543
  • 博文数量: 17
  • 博客积分: 248
  • 博客等级: 二等列兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-26 12:13
个人简介

别让往昔的悲伤和对未来的恐惧,毁了你当下的幸福。

文章分类

全部博文(17)

文章存档

2013年(6)

2012年(2)

2011年(9)

我的朋友

分类: Java

2011-08-29 22:41:13

   今天对mybatis进行了学习并写了个demo,总结如下
   该例子直接和spring集成数据库mysql,缓存用ehcache,在写demo遇到的一些问题记下来:
   1.mybatis映射domain的两种方法:
      (1)通过MapperFactoryBean来实现:
      
  1. <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
  2.         <property name="mapperInterface" value="org.guarx.dao.UserDao" />
  3.         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  4.     </bean>
UserDao就是一个接口:
  
  1. * @(#)UserMapper.java 2011-8-29 下午1:01:44
  2. package org.guarx.dao;

  3. import java.util.List;

  4. /**
  5.  * Description:
  6.  * Company:
  7.  * @author: gang.xu
  8.  * @version: 1.0
  9.  * Create at: 2011-8-29 下午1:01:44
  10.  *
  11.  * Modification History:
  12.  * Date Author Version Description
  13.  * ------------------------------------------------------------------
  14.  * 2011-8-29 gang.xu 1.0 1.0 Version
  15.  */
  16. public interface UserDao {
  17.  User getUser(String userId);
  18.  List<User> getUsers();
  19. }
2.通过继承SqlSessionDaoSupport并实现UserDao的方式:
UserDaoImpl:
  1. * @(#)UserDaoImpl.java    2011-8-29 下午1:28:34
  2. package org.guarx.dao;

  3. import java.util.List;

  4. import org.guarx.domain.User;
  5. import org.mybatis.spring.mapper.MapperFactoryBean;
  6. import org.mybatis.spring.support.SqlSessionDaoSupport;

  7. /**
  8.  * Description:
  9.  * Company:        
  10.  * @author: gang.xu
  11.  * @version: 1.0
  12.  * Create at: 2011-8-29 下午1:28:34
  13.  *
  14.  * Modification History:
  15.  * Date Author Version Description
  16.  * ------------------------------------------------------------------
  17.  * 2011-8-29 gang.xu 1.0 1.0 Version
  18.  */
  19. public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
  20.     
  21.     public User getUser(String userId) {
  22.         return (User) getSqlSession().selectOne("org.guarx.dao.UserDao.getUser", userId);
  23.     }

  24.     @SuppressWarnings("unchecked")
  25.     @Override
  26.     public List<User> getUsers() {
  27.         // TODO Auto-generated method stub

  28.         return (List<User>) getSqlSession().selectList("org.guarx.dao.UserDao.getUsers", new User());
  29.     }
  30. }

对应的配置文件如下:

UserService是service层代码.

  1. <bean id="userService" class="org.guarx.service.UserService">
  2.         <property name="userDao" ref="userDao" />
  3.     </bean>
  4.  <bean id="userDao" class="org.guarx.dao.UserDaoImpl">
  5.         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
  6.     </bean>

UserDao.xml配置文件如下:

 

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3.     PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4.     "">

  5. <mapper namespace="org.guarx.dao.UserDao">
  6.     <cache type="org.mybatis.caches.ehcache.EhcacheCache" size="2048" eviction="LRU">
  7.     </cache>
  8.     <select id="getUser" resultType="org.guarx.domain.User" parameterType="java.lang.String">
  9.         select * from users where id=#{value}
  10.     </select>
  11.     
  12.     <select id="getUsers" resultType="org.guarx.domain.User">
  13.         select * from users
  14.     </select>

  15. </mapper>

  2.mybatis对ehcache集成的一点说明:

  配置UserDao.xmlde 标签部分;

  size属性是配置内存块大小默认为1024k;

  查看org.mybatis.caches.ehcache.EhcacheCache的源码:

  public EhcacheCache(final String id) {
        if (id == null) {
            throw new IllegalArgumentException("Cache instances require an ID");
        }
        this.id = id;
        if (!CACHE_MANAGER.cacheExists(this.id)) {
            CACHE_MANAGER.addCache(this.id);
        }
    }

这样的话,addCache的时候用的是defaultCache的配置

 

阅读(3881) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~