3
回答
为什么SpringMVC数据库取值为空
【腾讯云】学生服务器套餐10元/月 >>>   
==================================================
applicationContext.xml:
==================================================
<context:component-scan base-package="com.spring.mvc"></context:component-scan>
<context:property-placeholder location="classpath:dataSource.properties"/>
<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">  
        <!-- 指定连接数据库的驱动-->
        <property name="driverClass" value="${jdbc.driverClassName}"/>  
        <!-- 指定连接数据库的URL-->  
        <property name="jdbcUrl" value="${jdbc.url}"/>  
        <!-- 指定连接数据库的用户名-->  
        <property name="user" value="${jdbc.username}"/>  
        <!-- 指定连接数据库的密码-->  
        <property name="password" value="${jdbc.password}"/>  
        <!-- 指定连接池中保留的最大连接数. Default:15-->  
        <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>  
        <!-- 指定连接池中保留的最小连接数-->  
        <property name="minPoolSize" value="${jdbc.minPoolSize}"/>  
        <!-- 指定连接池的初始化连接数  取值应在minPoolSize 与 maxPoolSize 之间.Default:3-->  
        <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>  
        <!-- 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。 Default:0-->  
        <property name="maxIdleTime" value="${jdbc.maxIdleTime}"/>  
        <!-- 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数. Default:3-->  
        <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/>  
        <!-- JDBC的标准,用以控制数据源内加载的PreparedStatements数量。  
        但由于预缓存的statements属于单个connection而不是整个连接池所以设置这个参数需要考虑到多方面的因数.如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default:0-->  
        <property name="maxStatements" value="${jdbc.maxStatements}"/>  
        <!-- 每60秒检查所有连接池中的空闲连接.Default:0 -->  
        <property name="idleConnectionTestPeriod" value="${jdbc.idleConnectionTestPeriod}"/>  
    </bean>  
    <!-- 配置jdbcTemplate -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!-- <property name="dataSource" ref="dataSource"></property> -->
    <constructor-arg name="dataSource" ref="dataSource"/>
    </bean>  
    <!-- 配置NamedParameterJDBCTemplate -->
  <bean id="namedParameterJDBCTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
    <constructor-arg><ref bean="dataSource"/></constructor-arg>
  </bean>
  <bean class="com.spring.mvc.jdbc.DBHelper">
  <!-- <property name="log"></property>
  <property name="ctx"></property> -->
  </bean>
==================================================
spring-servlet:
==================================================
<mvc:annotation-driven/>
<!-- <context:annotation-config />  -->
<context:component-scan base-package="com.spring.mvc.controller"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> 
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
==================================================
启动Spring时自动加载上下文:
==================================================
public static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
ctx=arg0;
}
==================================================
DaoImpl:
==================================================
@Repository
public class SpittleDaoImpl implements SpittleDao{
@Autowired
private JdbcTemplate jt;
@Autowired
private NamedParameterJdbcTemplate npjt;
@Override
public List<Spittle> findAll() {
List<Spittle> list=new ArrayList<Spittle>();
try {
String sql="select * from spittle";
RowMapper<Spittle> rowMapper=new BeanPropertyRowMapper<Spittle>(Spittle.class);
list = jt.query(sql, rowMapper);
System.out.println("进入com.spring.mvc.dao.impl.SpittleDaoImpl,自动注入的jt:"+jt);
System.out.println("进入com.spring.mvc.dao.impl.SpittleDaoImpl,查询结果为:"+list);
return list;
} catch (DataAccessException e) {
return null;
}
}


public JdbcTemplate getJt() {
return jt;
}


public void setJt(JdbcTemplate jt) {
this.jt = jt;
}
}
==================================================
controller:
==================================================
@Controller
@RequestMapping("/spittle")
public class SpittleController {
@Autowired
private SpittleDao spittleDao;
@RequestMapping(value="list",method=RequestMethod.GET)
public ModelAndView spittles(){
// Connection conn=DBHelper.getConnection();
System.out.println(DBHelper.ctx);
ModelAndView mv=new ModelAndView();
Object o=spittleDao.findAll();
System.out.println(o);
mv.addObject("spittleList", o);
mv.setViewName("spittles");
return mv;
}
@RequestMapping(value="/one",method=RequestMethod.POST)
public String spittle(@RequestParam("id")int id,Model model){
model.addAttribute("spittle", spittleDao.findById(id));
return "spittle";
}
}


麻烦大神帮忙看看,我可以访问到/spittle/list,数据库的配置文件没有错,数据库也有内容~但是得不到数据?
<无标签>
举报
末日花都
发帖于2年前 3回/247阅
顶部