有时候我们在开发的过程中,sql语句是由用户自己填写的,这样的话我们就不能预知这条sql语句返回的是什么对象,于是daoImpl中我们在返回数据的时候所需要的rowMapper就不能用某一个对象来概括,下面就是我在开发过程中用到的一个通用的rowMapper:
bean代码(set和get方法就不写了):
public class CommonData {
private String label;
private String name;
private String value;
private int type;
private String typeName;
private long dateTime;
}
rowMapper代码:
private class CommonDataRowMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rownum) throws SQLException {
List list = new LinkedList();
ResultSetMetaData meta = rs.getMetaData();
int count =meta.getColumnCount();
for ( int i=1;i<=count; i++)
{
CommonData data = new CommonData();
data.setLabel(meta.getColumnLabel(i));
data.setName(meta.getColumnName(i));
data.setValue(rs.getString(i));
data.setType(meta.getColumnType(i));
data.setTypeName(meta.getColumnTypeName(i));
if (data.getType() == Types.DATE
|| data.getType() == Types.TIME
|| data.getType() == Types.TIMESTAMP)
{
if (data.getDateTime() <=0)
{
data.setDateTime(rs.getTimestamp(i).getTime());
}
}
list.add(data);
}
return list;
}
}
这里的思想就是,把我们通常的一个对象转换成了一个list,list里面的数据就是这个对象的属性以及属性对应的值,即多个CommonData 对象。举个例子说就是,比如我有一个对象person,有age和name两个属性,那么list里面就有两条数据,两个CommonData对象,这两个对象的name分别是age和name,value则是这两个属性的具体值。
分享到:
相关推荐
- **函数或方法**:在编程语言中创建函数或方法,如在Python中使用def定义函数,Java中使用public void方法,将SQL语句作为参数传递,返回查询结果。 - **存储过程**:在数据库级别进行封装,创建存储过程,将一系列...
在Java中,我们需要获取前端传来的页码和每页大小,然后构造上述SQL语句并执行: ```java @PostMapping("getData") public Map, Object> getData(@RequestParam int page, @RequestParam int pageSize) { String ...
在使用 JdbcTemplate 时,需要将 SQL 语句和参数传递给相应的方法,然后 JdbcTemplate 会将参数绑定到 SQL 语句中,并执行查询或更新操作。 在查询结果为空或查询结果大于 1 行时,JdbcTemplate 会抛出异常。这些...
- 查询返回集合:使用query方法,传入SQL语句和RowMapper实例。 对于批量操作,JdbcTemplate提供了以下支持: 1. 执行批量添加操作:通过遍历List集合,将每个数组作为参数执行SQL语句进行添加。 2. 执行批量删除...
`find` 方法用于查询数据库,接受SQL语句、参数数组以及结果集的Java类型作为输入,返回一个对象列表。`addOrUpdateOrDelete` 方法则用于执行插入、更新或删除操作,依赖于传入的SQL语句和参数。 接着,`...
- 查询(Query):`query(String sql, RowMapper<T> rowMapper)`方法用于执行SELECT语句,根据SQL语句获取结果集,并通过`RowMapper`接口将结果转换为自定义的对象。 3. **批处理操作**:如果需要批量执行SQL语句...
* 调用此方法,需要自定义一个类实现RowMapper接口,该接口返回泛型,该泛型为该方法返回值集合的泛型 * @param sql * :SQL语句,参数用"?"表示 * @param rm * :rm为RowMapper接口的实现类所产生的对象 ...
- **List query(String sql, PreparedStatementSetter pss, RowMapper rowMapper)**:通过 String 类型参数提供的 SQL 创建 PreparedStatement 对象,再通过 RowMapper 返回结果。 - **List query(String sql, ...
使用`NamedParameterJdbcTemplate`可以更清晰地处理带参数的SQL语句,通过占位符和参数Map进行匹配。 8. **异常处理** Spring JDBC将数据库抛出的异常封装为`DataAccessException`,这是一个统一的异常类,简化了...
- 为了保持代码整洁,建议将SQL语句从方法体中分离到配置文件或资源文件中,使用`@Value`注解注入。 - 使用事务管理器来管理数据库事务,确保数据一致性。 通过以上内容,我们可以了解到JdbcTemplate如何简化了...
这里使用了`queryForObject()`方法,其接收三个参数:SQL语句、参数数组及期望的返回类型。如果查询结果为空或不匹配指定的返回类型,则会抛出异常。 ##### 3. `queryForList()` 当需要获取多行数据时,可以使用`...
它通常包含了一系列静态方法,可以执行SQL语句,处理结果集,进行数据库连接的创建、管理和关闭等。这样的工具类在DAO(数据访问对象)层与数据库交互时起着至关重要的作用,使得开发者不必频繁地关注数据库连接的...
对于更复杂的分页需求,比如排序、条件过滤,可以在SQL语句中添加相应的WHERE子句和ORDER BY子句。例如: ```sql SELECT * FROM table WHERE condition ORDER BY column LIMIT ?, ? ``` 在实际项目中,我们可能还...
5. **类型安全**: 使用JdbcTemplate的RowMapper,可以在编译时检查SQL查询返回的对象映射。 在示例代码中,`Dept`类代表一个实体,`DeptRepository`类展示了如何使用Spring Data JDBC。`JdbcTemplate`是Spring提供...
在Spring Boot框架中,JDBC(Java Database Connectivity)是一个常用的数据访问组件,它允许开发者直接执行SQL语句来与数据库进行交互。本篇文章将详细探讨Spring Boot JDBC的使用,包括如何配置、创建数据源、执行...
8. **最佳实践**:在实际应用中,应遵循良好的编码习惯,如避免SQL注入,使用占位符参数而非字符串拼接,确保SQL语句的正确性和安全性。 总的来说,Spring的JDBC模块通过`update`和`query`方法为数据库操作提供了...
params)`则返回一个对象列表,这些方法都会根据给定的SQL语句和参数执行查询,并将结果映射到Java对象上。 5. **事务管理**:SQLHelper通常也包含事务处理的相关方法,如`beginTransaction()`开始一个事务,`...
- **SqlFile**:SQL脚本文件,通常存储在类路径下,可包含多个SQL语句,方便维护和管理。 - **BeanDesc**:描述Java对象的元数据,包括属性名、类型等信息。 - **OgnlExpression**:基于OGNL表达式引擎,用于动态...
在这个例子中,`getUsersByAge`方法使用了JdbcTemplate的query方法,传递了SQL查询语句、自定义的RowMapper以及查询参数。这样,我们就可以轻松地获取到符合条件的用户列表。 总的来说,Spring的JDBC模板通过提供一...
然后,我们使用`NamedParameterJdbcTemplate`的`query`方法执行查询,其中SQL语句中的`:userId`和`:username`对应于参数源中的键。 ### 五、异常处理与事务管理 Spring 4中的JdbcTemplate继承自JDBC抽象层,因此也...