项目转移到springboot后,修改了xml中的Sql ,新的SQL语句不生效
来源:13-8 前端页面的迁移
Turn_Phantom
2018-03-31
我把项目转移到SpringBoot后,在ProductDao.xml文件中的queryProductList的查询语句中,新增一个查询字段:point,然后无论是单元测试,还是从页面查询,获取的point都是null值。
试过了clean,update,重新编译,重启电脑,甚至把target文件夹下的所有文件删了,都不行
然后回到ssm中的项目做同样的操作,又是一切正常,在springboot中就不行,这是为什么?
4回答
-
同学好,感谢提供详细的信息,我看到你的interface selectPoint的返回值是Product,而你select point只是一个int类型的数字,所以你改成返回值是int的这种试试?就跟count一样。我估计也应该不是这样的问题因为你说SSM是能通过的,两个都是spring框架,差别应该不大。配置的话也请检查一下
我dao的配置如下
SessionFactoryConfiguration.java
package com.imooc.o2o.config.dao; import java.io.IOException; import javax.sql.DataSource; import org.mybatis.spring.SqlSessionFactoryBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.core.io.support.ResourcePatternResolver; @Configuration public class SessionFactoryConfiguration { // mybatis-config.xml配置文件的路径 private static String mybatisConfigFile; @Value("${mybatis_config_file}") public void setMybatisConfigFile(String mybatisConfigFile) { SessionFactoryConfiguration.mybatisConfigFile = mybatisConfigFile; } // mybatis mapper文件所在路径 private static String mapperPath; @Value("${mapper_path}") public void setMapperPath(String mapperPath) { SessionFactoryConfiguration.mapperPath = mapperPath; } // 实体类所在的package @Value("${type_alias_package}") private String typeAliasPackage; @Autowired private DataSource dataSource; /** * 创建sqlSessionFactoryBean 实例 并且设置configtion 设置mapper 映射路径 设置datasource数据源 * * @return * @throws IOException */ @Bean(name = "sqlSessionFactory") public SqlSessionFactoryBean createSqlSessionFactoryBean() throws IOException { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); // 设置mybatis configuration 扫描路径 sqlSessionFactoryBean.setConfigLocation(new ClassPathResource(mybatisConfigFile)); // 添加mapper 扫描路径 PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver(); String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + mapperPath; sqlSessionFactoryBean.setMapperLocations(pathMatchingResourcePatternResolver.getResources(packageSearchPath)); // 设置dataSource sqlSessionFactoryBean.setDataSource(dataSource); // 设置typeAlias 包扫描路径 sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasPackage); return sqlSessionFactoryBean; } }
DataSourceConfiguration.java
package com.imooc.o2o.config.dao; import java.beans.PropertyVetoException; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.imooc.o2o.util.DESUtil; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 配置datasource到ioc容器里面 * * @author xiangze * */ @Configuration // 配置mybatis mapper的扫描路径 @MapperScan("com.imooc.o2o.dao") public class DataSourceConfiguration { @Value("${jdbc.driver}") private String jdbcDriver; @Value("${jdbc.url}") private String jdbcUrl; @Value("${jdbc.username}") private String jdbcUsername; @Value("${jdbc.password}") private String jdbcPassword; /** * 生成与spring-dao.xml对应的bean dataSource * * @return * @throws PropertyVetoException */ @Bean(name = "dataSource") public ComboPooledDataSource createDataSource() throws PropertyVetoException { // 生成datasource实例 ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 跟配置文件一样设置以下信息 // 驱动 dataSource.setDriverClass(jdbcDriver); // 数据库连接URL dataSource.setJdbcUrl(jdbcUrl); // 设置用户名 dataSource.setUser(DESUtil.getDecryptString(jdbcUsername)); // 设置用户密码 dataSource.setPassword(DESUtil.getDecryptString(jdbcPassword)); // 配置c3p0连接池的私有属性 // 连接池最大线程数 dataSource.setMaxPoolSize(30); // 连接池最小线程数 dataSource.setMinPoolSize(10); // 关闭连接后不自动commit dataSource.setAutoCommitOnClose(false); // 连接超时时间 dataSource.setCheckoutTimeout(10000); // 连接失败重试次数 dataSource.setAcquireRetryAttempts(2); return dataSource; } }
同学先对比一下,这几天我外出了,可能回复得会比较慢,请谅解:)
012018-04-03 -
翔仔
2018-04-01
同时,即便不要selectPoint,验证别的dao方法也会有问题的话,那就是配置问题,请仔细核对一下
00 -
Turn_Phantom
提问者
2018-04-01
老师,你说的这些我全都试过了,数据库都是有值的,我ssm和springboot的项目连的是同一个数据库,ssm项目中都是可以正常的,就是我转移之后好像项目就出问题了,我重新到官网下载了sts工具,把项目拷进去,还是原来的问题,我尝试着另外新增一个查询语句,和dao接口,然后测试时候报错,我去了原来ssm项目中做了同样的测试,都能够正常获取值的。是不是我转移项目时候哪里配置错了?
00 -
翔仔
2018-04-01
同学好,这个需要同学做下调试,看看你数据库中point是否有值,如果有,看看控制台里的sql 复制下来贴到mysql客户端去执行,看看point的值能否出来,依次去调试,做到这里相信同学也有解决问题的能力了
032018-04-15
相似问题