在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" 描述了一个基于Java的Web开发项目,它集成了Spring MVC 4.3版本、MySQL 5.6数据库以及ShardingJDBC 2.0.3版本的分库分表框架。这个项目提供了一个基础架构,允许...
在IT行业中,构建Java Web应用程序时,我们常常采用Maven作为项目管理工具,Spring作为核心框架,Mybatis作为持久层框架,而MySql则作为数据库系统。本实例将详细讲解如何利用Maven来搭建一个整合了Spring、Mybatis...
1. POM.xml配置文件:导入必要的依赖,如Spring Boot的web和测试模块,MySQL驱动,Mybatis-Plus以及Sharding-JDBC的相关依赖。 2. 配置文件(application.yml或application.properties):配置数据库连接、Sharding-...
- 使用`@Autowired`注入Mapper接口,Spring会自动处理Mapper的实例化和依赖注入。 - 配置Mapper扫描,Spring会自动加载所有的Mapper接口。 通过这个压缩包中的"smm"文件,你可以看到具体的代码实现,包括Spring...
- **JDBC驱动**:确保项目中包含MySQL的JDBC驱动依赖,如`mysql-connector-java`。 - **数据源配置**:在Spring Boot的配置文件中指定MySQL的连接信息,包括数据库名称、用户名、密码、端口等。 - **自动配置**:...
##底层使用的是spring jdbcTemplate ##目前支持的数据库为mysql,db2 ##mysql,db2测试通过 ##支持分分布式数据库操作,支持单库jdbc事务,支持读写分离(请看database_distribution.md) ##需要注意的是,查询使用的sql...
所需的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.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=...
在这里,`primary`和`secondary`是两个数据源的别名,我们可以根据业务需求选择使用哪个数据源。 接下来,我们需要在代码中进行数据源的选择和切换。Spring Boot提供了AbstractRoutingDataSource类,它可以动态地...
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....
6. **数据库驱动**:根据所使用的数据库,例如MySQL、Oracle等,需要相应的JDBC驱动jar包,如`mysql-connector-java`。 7. **其他辅助库**:`slf4j-api`和相应的实现库(如`logback-classic`或`log4j-over-slf4j`)...
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进行了整合,并通过Spring的AOP特性实现了事务管理。这种整合方式不仅简化了开发过程中的数据库操作,还...
在Java的Web应用开发中,Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)功能而被广泛使用。而Proxool是Oracle公司开源的一个数据库连接池组件,它提供了高效的数据库连接管理,有助于减少数据库资源的...
编写jdbc_mysql.properties文件,并导入 2.5 spring-bean 注册dao,这个是spring集成mybatis,注册sqlSession 这里就要导入mybatis和spring的整合包了,这里sqlsession中也要导入mybatis的配置文件 2.6 spring-bean ...
该配置文件定义了MyBatis的一些全局设置,如使用列别名、开启驼峰命名规则转换等功能,内容如下: ```xml <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ...
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 ``` - ...
集成Spring框架时,我们需要在`pom.xml`文件中添加Spring的相关依赖,例如Spring的核心模块和Spring JDBC模块: ```xml <!-- Spring核心 --> <groupId>org.springframework <artifactId>spring-context ...
- Spring通过DataSource配置管理数据库连接,可以使用JDBC驱动或者第三方库如Druid或Apache DBCP。 - MyBatis通过SqlSessionFactoryBuilder创建SqlSessionFactory,SqlSessionFactory是MyBatis的核心,用于创建...
此外,`mysql-connector-java-5.1.6-bin.jar`是MySQL的JDBC驱动,是连接MySQL数据库的必备库,它实现了Java与MySQL之间的通信。 整合MyBatis与Spring的主要步骤如下: 1. 配置Spring的XML上下文文件:在Spring的...