其中的set方法能直接运行;
但是在使用被注入的东西的时候会报空指针...
<!-- 1. 数据源 : DriverManagerDataSource -->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybaitis"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!--
2. mybatis的SqlSession的工厂: SqlSessionFactoryBean
dataSource / typeAliasesPackage
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="datasource"/>
<property name="typeAliasesPackage" value="com.springmvc.mybaitsmodel"/>
</bean>
<bean id="SqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
<!-- <constructor-arg index="1" value="BATCH" />如果想要进行批量操作可加入这个属性 -->
</bean>
<bean id="userDaoimpl" class="com.springmvc.dao.UserDaoImpl" >
<property name="SqlSession" ref="SqlSession"/>
</bean>
<!--
3. mybatis自动扫描加载Sql映射文件 : MapperScannerConfigurer
sqlSessionFactory / basePackage
-->
<bean id="config" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.springmvc.mybaitsmodel"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 4. 事务管理 : DataSourceTransactionManager -->
<bean id="manager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="datasource"/>
</bean>
<!-- 5. 使用声明式事务 -->
<tx:annotation-driven transaction-manager="manager" />
private SqlSession SqlSession;
public SqlSession getSqlSession() {
return SqlSession;
}
@Resource
public void setSqlSession(SqlSession sqlSession) {
System.out.println("set:"+SqlSession);
SqlSession = sqlSession;
}
@Override
public User findUserById(int id) {
System.out.println("usering..."+SqlSession);
User user = SqlSession.selectOne(User.class.getName()+".selectUserByid", id);
System.out.println(user.getName());
return user;
}
再启动服务器的时候会打出来set:加一串地址,标示注入进来了
但是在使用下面的方法是 usssering..为空
求大神
------解决思路----------------------
你先把 private SqlSession SqlSession; 首字母小写
------解决思路----------------------
xml也要改
<bean id="userDaoimpl" class="com.springmvc.dao.UserDaoImpl" >
<property name="SqlSession" ref="SqlSession"/>
</bean>
------解决思路----------------------
现在正常调用时
User user = sqlSession.selectOne(User.class.getName()+".selectUserByid", id);这里的sqlSession为null?
------解决思路----------------------
<bean id="SqlSession" class="org.mybatis.spring.SqlSessionTemplate">
这个地方小写没改
------解决思路----------------------
注入session的配置没问题,我觉得可能是service调用或注入有问题
------解决思路----------------------
Spring注入默认采用的是ByName,所有对实体的要求是尽量的参照javaBean规范。
------解决思路----------------------
tomcat加载spring应该在web.xml文件里配置一下吧。把这个文件/config/beans.xml配置到web.xml里试试呢