本帖最后由 clear_shadow 于 2012-12-27 17:54:10 编辑

解决方案 »

  1.   

    Error opening session
    说明是连接有错,
      

  2.   

    给你个借鉴的配置
    <!-- 定义运维平台mysql数据源 -->
    <bean id="proxySource" class="org.apache.commons.dbcp.BasicDataSource"
    destroy-method="close">
    <property name="driverClassName" value="${mysql_proxy_DriverClassName}" />
    <property name="url" value="${mysql_proxy_url}" />
    <property name="username" value="${mysql_proxy_username}" />
    <property name="password" value="${mysql_proxy_password}" />
    <property name="initialSize" value="${mysql_proxy_initialSize}" />
    <property name="maxActive" value="${mysql_proxy_maxActive}" />
    <property name="maxWait" value="${mysql_proxy_maxWait}" />
    <property name="maxIdle" value="${mysql_proxy_maxIdle}" />
    <property name="minIdle" value="${mysql_proxy_minIdle}" />
    <property name="removeAbandoned" value="${mysql_proxy_removeAbandoned}" />
    <property name="removeAbandonedTimeout" value="${mysql_proxy_removeAbandonedTimeout}" />
    <property name="testWhileIdle" value="${mysql_proxy_testWhileIdle}" />
    <property name="testOnBorrow" value="${mysql_proxy_testOnBorrow}" />
    <property name="testOnReturn" value="${mysql_proxy_testOnReturn}" />
    <property name="validationQuery" value="${mysql_proxy_validationQuery}" />
    <property name="validationQueryTimeout" value="${mysql_proxy_validationQueryTimeout}" />
    <property name="timeBetweenEvictionRunsMillis" value="${mysql_proxy_timeBetweenEvictionRunsMillis}" />
    <property name="numTestsPerEvictionRun" value="${mysql_proxy_numTestsPerEvictionRun}" />
    </bean> <!-- 为每个数据源单独定义 SqlSessionFactory -->
    <bean id="applyCenterSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="proxySource" />
    </bean> <!-- 为每个数据源单独定义 SqlMapper -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.test.quarry.proxy.dao" />
    <property name="sqlSessionFactory" ref="applyCenterSqlSessionFactory" />
    </bean>
    <property name="basePackage" value="com.test.quarry.proxy.dao" /> 改成自己的mapper路径就可以了
    然后在该路径下建接口mapper,和mapper的xml文件就可以
      

  3.   


    谢谢你的回复。我参照你的改了后还是报同样的错误。
    我仔细看了下,下面是我的service层的方法,我感觉是我在获取sqlSessionFactory实例的时候出错了,没和spring整合前我直接用Mybatis是可以访问数据库并取得数据的。整合之后,我看资料说mybatis的配置文件可以注释掉了。spring会自动代替mybatis。我不知道是不是这个地方出错了。
    TestMapperUser.java
    --------------------------------------------------------------------------
    public class TestMapperUser { static SqlSessionFactory sqlSessionFactory = null; static {
    sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
    } public boolean checkUser(String userName, String password) {

    SqlSession sqlSession = sqlSessionFactory.openSession();

    try {
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    UserExample example = new UserExample(); example.clear();
    example.or().andUsernameEqualTo(userName).andPasswordEqualTo(password); return !lst.isEmpty();
    } finally {
    sqlSession.close();
    }
    }}
    --------------------------------------------------------------------------
    MyBatisUtil.java
    --------------------------------------------------------------------------
    public class MyBatisUtil {

    private final static SqlSessionFactory sqlSessionFactory ; static {
    String resouce = "mybatis-config.xml";

    Reader reader = null;

    try {
    reader = Resources.getResourceAsReader(resouce);

    } catch (IOException e) {
    System.out.println(e.getMessage());
    } sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); 
    } public static SqlSessionFactory getSqlSessionFactory() {
    return sqlSessionFactory ;
    }}
      

  4.   

    照我那样配了之后就不用再service里获取sqlSessionFactory 了,
    @Service
    public class MongoServiceImpl implements MongoService
    {
    private static Logger logger = LoggerFactory.getLogger(MongoServiceImpl.class);
    private ClientInfoMapper clientMapper; @Autowired
    public MongoServiceImpl(ClientInfoMapper clientMapper)
    {
    this.clientMapper = clientMapper;
    }
    直接MongoServiceImpl(ClientInfoMapper clientMapper)在serivce里这样注入你的mapper接口就可以调用了
      

  5.   


    请问如果按照你的这种配置方法,sqlSession是自动创建和销毁的么?
      

  6.   


    按照你说的自动注入的方式,我的程序已经调通了,谢谢你了。只是还想确认下是不是sqlsession是自动创建和销毁的。
      

  7.   

    你先确认下变量都有setter/getter方法没有
      

  8.   

    都有。之前我是手动的获得sqlsession。后来按照2楼说的改成自动的就好了
      

  9.   

    先学习好ssh吧  把那个看清楚了 再来弄这个 保证没问题 大哥