项目转移到springboot后,修改了xml中的Sql ,新的SQL语句不生效

来源:13-8 前端页面的迁移

Turn_Phantom

2018-03-31

我把项目转移到SpringBoot后,在ProductDao.xml文件中的queryProductList的查询语句中,新增一个查询字段:point,然后无论是单元测试,还是从页面查询,获取的point都是null值。

试过了clean,update,重新编译,重启电脑,甚至把target文件夹下的所有文件删了,都不行

然后回到ssm中的项目做同样的操作,又是一切正常,在springboot中就不行,这是为什么?

写回答

4回答

翔仔

2018-04-01

同学好,感谢提供详细的信息,我看到你的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;
	}

}

同学先对比一下,这几天我外出了,可能回复得会比较慢,请谅解:)

0
1
Turn_Phantom
非常感谢!好的,我仔细检查一下
2018-04-03
共1条回复

翔仔

2018-04-01

同时,即便不要selectPoint,验证别的dao方法也会有问题的话,那就是配置问题,请仔细核对一下

0
0

Turn_Phantom

提问者

2018-04-01

老师,你说的这些我全都试过了,数据库都是有值的,我ssm和springboot的项目连的是同一个数据库,ssm项目中都是可以正常的,就是我转移之后好像项目就出问题了,我重新到官网下载了sts工具,把项目拷进去,还是原来的问题,我尝试着另外新增一个查询语句,和dao接口,然后测试时候报错,我去了原来ssm项目中做了同样的测试,都能够正常获取值的。是不是我转移项目时候哪里配置错了?

//img.mukewang.com/szimg/5ac03f9a00010f6b07790073.jpg

//img.mukewang.com/szimg/5ac03fce0001fc7207900434.jpg

//img.mukewang.com/szimg/5ac0400700013bf507920386.jpg

//img.mukewang.com/szimg/5ac0403e0001b4e208530482.jpg


0
0

翔仔

2018-04-01

同学好,这个需要同学做下调试,看看你数据库中point是否有值,如果有,看看控制台里的sql 复制下来贴到mysql客户端去执行,看看point的值能否出来,依次去调试,做到这里相信同学也有解决问题的能力了

0
3
Turn_Phantom
回复
翔仔
搞不懂,有时候就是莫名其妙,遇到过几次这样的了,有的要重启eclipse重启电脑才正常。
2018-04-15
共3条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程