当mysql中类型为"TINYINT UNSIGNED"或者"TINYINT "时,用JDBC取出记录时,getObject()得到的是boolean类型,这时必须用getInt()才行。
spring JdbcTemplate的API 默认是直接调用rs.getObject()处理的,所以需要扩展它的方法,处理过程如下:
1. 使用JdbcTemplate的RowMapper API
public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException { return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper)); }
2. JdbcTemplate的queryForList和queryForMap都是ColumnMapRowMapper,覆盖其mapRow方法,主要就是增加一个类型判断:
private static class MyColumnMapRowMapper extends ColumnMapRowMapper { public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); Map<String, Object> mapOfColValues = createColumnMap(columnCount); for (int i = 1; i <= columnCount; i++) { String key = getColumnKey(JdbcUtils.lookupColumnName(rsmd, i)); Object obj = null; if (rsmd.getColumnTypeName(i).equals("TINYINT")) { obj = rs.getInt(i); } else { obj = getColumnValue(rs, i); } mapOfColValues.put(key, obj); } return mapOfColValues; } }
3. 使用
protected RowMapper<Map<String, Object>> getColumnMapRowMapper() { return new MyColumnMapRowMapper(); } readJdbc.queryForMap(sql, params, getColumnMapRowMapper());
相关推荐
在这个自定义实现类中,你需要覆盖`getJdbcTypeForBigDecimal`等方法,以便在处理tinyint类型时返回Integer对应的jdbcType。 2. **直接在XML映射文件中修改**: 如果只是个别字段需要映射为Integer,可以在对应的...
默认情况下,MBG可能会将`TINYINT(1)`视为Java的`boolean`类型,但有时这并不符合所有情况,因为`TINYINT`可以存储范围从-128到127的整数值。因此,MBG可能提供了一个定制化的方式,允许开发者自定义如何处理`...
### MySQL INT 和 TINYINT 的区别 #### 一、INT 和 TINYINT 概述 在MySQL中,`INT` 和 `TINYINT` 是两种常见的整数类型,它们主要用于存储整数值。这两种类型的差异主要体现在存储空间的需求、能够表示的数值范围...
在MySQL的数据类型中,Tinyint的取值范围是:带符号的范围是-128到127。无符号的范围是0到255(见官方《MySQL 5.1参考手册》http://dev.mysql.com/doc/refman/5.1/zh/column-types.html#numeric-types)。 Tinyint...
在使用MySQL处理数据时,数据类型的选择至关重要。不同的数据类型会影响存储空间的需求、处理速度以及查询效率等方面。例如,选择合适的整数类型(如TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT等)不仅能够节省存储...
`TINYINT(1)`在MySQL中通常用于存储单个位的布尔值(尽管实际上它可以存储更大的范围),但在某些情况下,这种类型可能无法满足Jbpm对字段精度或数据类型的要求,尤其是在处理布尔逻辑时。 #### 解决方案:修改字段...
- **`BOOL` 和 `BOOLEAN`:** 在 MySQL 中,这两个关键字实际上是别名,表示 `TINYINT(1)` 类型,这意味着它们只能存储 0 或 1,分别代表 false 和 true。 - **注意:** 尽管 `BOOL` 和 `BOOLEAN` 在 SQL 标准中被...
MySQL 处理添加外键时提示 Error 150 问题的解决方法 MySQL 中添加外键时,可能会遇到 Error 150 的问题,这个问题是 MySQL 本身的 bug,已经被报告到 MySQL 开发者列表中很多年了。然而,导致这个错误的原因却并...
在安装与配置MySQL后,我们需要熟悉数据类型,如整数类型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)、浮点数类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,而Hive则是大数据处理领域的重要工具,主要用于结构化数据的查询、分析和管理。这两个技术在后端开发和大数据处理中扮演着至关重要的角色。下面,我们将深入探讨...
例如,MySQL的`VARCHAR2`对应Oracle的`VARCHAR2`,但MySQL的`TINYINT`在Oracle中可能是`NUMBER(3)`,`BLOB`和`CLOB`在两个系统中都有,但处理方式不同。 3. **对象权限和安全模型**: MySQL的权限管理相对简单,而...
C#数据类型 C#中的数据类型可以分为值类型、引用类型和指针类型。值类型包括简单类型、结构和枚举,引用类型包括类、接口、委托、数组和字符串等。 值类型是在栈中分配内存,在声明时初始化才能使用,不能为 NULL...
1. **数据类型**:MySQL支持多种数据类型,如整数类型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)、浮点数类型(FLOAT、DOUBLE)、字符串类型(VARCHAR、CHAR、TEXT)和日期时间类型(DATE、TIME、DATETIME、...
- 数据类型:例如,MySQL的`VARCHAR2`在Oracle中是`VARCHAR2`,但MySQL的`TINYINT`对应Oracle的`NUMBER(3)`。 - 约束定义:Oracle使用`CONSTRAINT`关键字定义约束,而MySQL可以直接在列定义中指定。 - 表空间:...
2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、浮点类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。 3. SQL语言...
MySQL 数据库中的数据基本类型包括 BIT、TINYINT、BOOL、BOOLEAN 等。BIT 是一个整数类型,TINYINT 是一个很小的整数类型,BOOL 和 BOOLEAN 是布尔类型。 HELP 命令 HELP 命令是 MySQL 数据库中的一个重要命令,...
在实际开发中,我们经常会遇到 MySQL 数据库的性能问题,特别是在处理千万级数据时,分页查询的性能会变得非常慢。在这篇文章中,我们将探讨如何优化 MySQL 千万级快速分页,详细介绍解决方案。 问题描述 我们有一...