`
koloum
  • 浏览: 11309 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

使用spring的jdbc处理mysql时,出现别名问题处理

阅读更多
在spring中使用jdbc处理mysql时,sql语句存在别名的情况下,获取结果总是缺少字段,代码如下所示:
		String sql = "select count(*) as num from yxtj_dqjl a";
		System.out.println("result:"+jdbcTemplate.queryForList(sql));


结果:
result:[{=6}]


这样的数据很明显不能进行操作,然后在网上找一些资料,mysql获取过来的ResultSetMetaData的getColumnName在某些情况下会为空,而getColumnLabel数据则可以正常获取对应的别名值。
具体测试代码如下:
			String sql = "select count(*) as testcount from test";
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			ResultSetMetaData rsmd = rs.getMetaData();
			System.out.println("columnName=" + rsmd.getColumnName(1));
			System.out.println("columnLabel=" + rsmd.getColumnLabel(1));

结果:
getColumnName=
getColumnLabel=testid


问题找到了,本项目使用spring2.0,对于高版本的不知道是否对这个问题进行了修改,我在项目里就直接把spring的源代码改掉,其中文件:org\springframework\jdbc\core\ColumnMapRowMapper.java

  public Object mapRow(ResultSet rs, int rowNum)
    throws SQLException
  {
    ResultSetMetaData rsmd = rs.getMetaData();
    int columnCount = rsmd.getColumnCount();
    Map mapOfColValues = createColumnMap(columnCount);
    for (int i = 1; i <= columnCount; i++) {
      [color=red]String key = getColumnKey(rsmd.getColumnName(i));[/color]
      Object obj = getColumnValue(rs, i);
      mapOfColValues.put(key, obj);
    }
    return mapOfColValues;
  }

对于红色标注部分,改为
String key = getColumnKey(rsmd.getColumnLabel(i));


将文件重新生成并替换原jar包,现可以正常返回需要我数据了:
result:[{num=6}]

分享到:
评论

相关推荐

    springmvc4.3+mysql5.6+shardingjdbc2.0.3

    标题 "springmvc4.3+mysql5.6+shardingjdbc2.0.3" 描述了一个基于Java的Web开发项目,它集成了Spring MVC 4.3版本、MySQL 5.6数据库以及ShardingJDBC 2.0.3版本的分库分表框架。这个项目提供了一个基础架构,允许...

    Maven搭建Spring+Mybatis+MySql实例

    在IT行业中,构建Java Web应用程序时,我们常常采用Maven作为项目管理工具,Spring作为核心框架,Mybatis作为持久层框架,而MySql则作为数据库系统。本实例将详细讲解如何利用Maven来搭建一个整合了Spring、Mybatis...

    Spring Boot 集成 Sharding-JDBC + Mybatis-Plus 实现分库分表功能

    1. POM.xml配置文件:导入必要的依赖,如Spring Boot的web和测试模块,MySQL驱动,Mybatis-Plus以及Sharding-JDBC的相关依赖。 2. 配置文件(application.yml或application.properties):配置数据库连接、Sharding-...

    源码:【Spring+MyBatis+MySQL实战入门】一、MyBatis操作入门

    - 使用`@Autowired`注入Mapper接口,Spring会自动处理Mapper的实例化和依赖注入。 - 配置Mapper扫描,Spring会自动加载所有的Mapper接口。 通过这个压缩包中的"smm"文件,你可以看到具体的代码实现,包括Spring...

    springboot整合mybatis和mysql

    - **JDBC驱动**:确保项目中包含MySQL的JDBC驱动依赖,如`mysql-connector-java`。 - **数据源配置**:在Spring Boot的配置文件中指定MySQL的连接信息,包括数据库名称、用户名、密码、端口等。 - **自动配置**:...

    halo-query:建立在spring jdbc 基础上的数据库操作框架。简化spring jdbc调用。支持分布式数据库操作,支持单库jdbc事务

    ##底层使用的是spring jdbcTemplate ##目前支持的数据库为mysql,db2 ##mysql,db2测试通过 ##支持分分布式数据库操作,支持单库jdbc事务,支持读写分离(请看database_distribution.md) ##需要注意的是,查询使用的sql...

    mybatis与spring三种整合方式与需要的jar包列表

    所需的jar包包括:`cglib-2.2.jar`用于动态代理,`asm-3.1.jar`用于字节码处理,`mysql-connector-java-3.1.13.jar`是MySQL的JDBC驱动,`mybatis-3.0.5.jar`是MyBatis的核心库,以及`junit.jar`用于单元测试。...

    spring boot

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=...

    spring boot 多数据源

    在这里,`primary`和`secondary`是两个数据源的别名,我们可以根据业务需求选择使用哪个数据源。 接下来,我们需要在代码中进行数据源的选择和切换。Spring Boot提供了AbstractRoutingDataSource类,它可以动态地...

    Spring Boot 如何使用 Mybatis.docx

    spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true spring.datasource.username=root spring.datasource.password=root spring....

    spring和mybatis整合所需的所有jar包集合

    6. **数据库驱动**:根据所使用的数据库,例如MySQL、Oracle等,需要相应的JDBC驱动jar包,如`mysql-connector-java`。 7. **其他辅助库**:`slf4j-api`和相应的实现库(如`logback-classic`或`log4j-over-slf4j`)...

    spring-boot-starter-mybatis-spring-boot-2.1.2.zip

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` - **配置...

    Spring+iBatis整合详解

    -- 使用别名避免每次都要输入完整的类名 --&gt; ``` #### 四、总结 通过上述步骤,我们成功地将Spring与iBatis进行了整合,并通过Spring的AOP特性实现了事务管理。这种整合方式不仅简化了开发过程中的数据库操作,还...

    spring+proxool配置spring+proxool配置

    在Java的Web应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能而被广泛使用。而Proxool是Oracle公司开源的一个数据库连接池组件,它提供了高效的数据库连接管理,有助于减少数据库资源的...

    spring+springmvc+mybatis的整合

    编写jdbc_mysql.properties文件,并导入 2.5 spring-bean 注册dao,这个是spring集成mybatis,注册sqlSession 这里就要导入mybatis和spring的整合包了,这里sqlsession中也要导入mybatis的配置文件 2.6 spring-bean ...

    ssm框架实战 SSM spring4.1.7+mybatis+SpringMVC 第一部分(Spring+Mybatis) 配置两边 都过

    该配置文件定义了MyBatis的一些全局设置,如使用列别名、开启驼峰命名规则转换等功能,内容如下: ```xml &lt;!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ...

    Spring Boot Mybatis使用详解含示例(值得珍藏)

    spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=rootpassword spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ``` - ...

    (Idea)Spring+MyBatis配置及单元测试

    集成Spring框架时,我们需要在`pom.xml`文件中添加Spring的相关依赖,例如Spring的核心模块和Spring JDBC模块: ```xml &lt;!-- Spring核心 --&gt; &lt;groupId&gt;org.springframework &lt;artifactId&gt;spring-context ...

    MyBatis和Spring结合的案例

    - Spring通过DataSource配置管理数据库连接,可以使用JDBC驱动或者第三方库如Druid或Apache DBCP。 - MyBatis通过SqlSessionFactoryBuilder创建SqlSessionFactory,SqlSessionFactory是MyBatis的核心,用于创建...

    MyBatis-Spring整合示例

    此外,`mysql-connector-java-5.1.6-bin.jar`是MySQL的JDBC驱动,是连接MySQL数据库的必备库,它实现了Java与MySQL之间的通信。 整合MyBatis与Spring的主要步骤如下: 1. 配置Spring的XML上下文文件:在Spring的...

Global site tag (gtag.js) - Google Analytics