`
lengyimeng
  • 浏览: 26971 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

不知sql语句以及返回对象的情况下使用的rowMapper

    博客分类:
  • java
 
阅读更多

有时候我们在开发的过程中,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则是这两个属性的具体值。

0
1
分享到:
评论
1 楼 jyjava 2012-06-25  
要考虑数据库字段的属性跟java数据类型的对应关系

相关推荐

    SQL语句封装

    - **函数或方法**:在编程语言中创建函数或方法,如在Python中使用def定义函数,Java中使用public void方法,将SQL语句作为参数传递,返回查询结果。 - **存储过程**:在数据库级别进行封装,创建存储过程,将一系列...

    sqlserver 实现分页的前台代码 以及后台的sqlserver语句

    在Java中,我们需要获取前端传来的页码和每页大小,然后构造上述SQL语句并执行: ```java @PostMapping("getData") public Map, Object&gt; getData(@RequestParam int page, @RequestParam int pageSize) { String ...

    Spring框架JdbcTemplate类中查询方法介绍

    在使用 JdbcTemplate 时,需要将 SQL 语句和参数传递给相应的方法,然后 JdbcTemplate 会将参数绑定到 SQL 语句中,并执行查询或更新操作。 在查询结果为空或查询结果大于 1 行时,JdbcTemplate 会抛出异常。这些...

    Spring--JdbcTemplate.pdf

    - 查询返回集合:使用query方法,传入SQL语句和RowMapper实例。 对于批量操作,JdbcTemplate提供了以下支持: 1. 执行批量添加操作:通过遍历List集合,将每个数组作为参数执行SQL语句进行添加。 2. 执行批量删除...

    spring的jdbctemplate的crud的基类dao

    `find` 方法用于查询数据库,接受SQL语句、参数数组以及结果集的Java类型作为输入,返回一个对象列表。`addOrUpdateOrDelete` 方法则用于执行插入、更新或删除操作,依赖于传入的SQL语句和参数。 接着,`...

    MySQL增删改查工具类.zip

    - 查询(Query):`query(String sql, RowMapper&lt;T&gt; rowMapper)`方法用于执行SELECT语句,根据SQL语句获取结果集,并通过`RowMapper`接口将结果转换为自定义的对象。 3. **批处理操作**:如果需要批量执行SQL语句...

    MySQL工具包

    * 调用此方法,需要自定义一个类实现RowMapper接口,该接口返回泛型,该泛型为该方法返回值集合的泛型 * @param sql * :SQL语句,参数用"?"表示 * @param rm * :rm为RowMapper接口的实现类所产生的对象 ...

    javaee期末.docx

    - **List query(String sql, PreparedStatementSetter pss, RowMapper rowMapper)**:通过 String 类型参数提供的 SQL 创建 PreparedStatement 对象,再通过 RowMapper 返回结果。 - **List query(String sql, ...

    springJdbcDemo11_java_springjdbc_

    使用`NamedParameterJdbcTemplate`可以更清晰地处理带参数的SQL语句,通过占位符和参数Map进行匹配。 8. **异常处理** Spring JDBC将数据库抛出的异常封装为`DataAccessException`,这是一个统一的异常类,简化了...

    java基于jdbctemplate数据持久层操作封装

    - 为了保持代码整洁,建议将SQL语句从方法体中分离到配置文件或资源文件中,使用`@Value`注解注入。 - 使用事务管理器来管理数据库事务,确保数据一致性。 通过以上内容,我们可以了解到JdbcTemplate如何简化了...

    JdbcTemplate查询

    这里使用了`queryForObject()`方法,其接收三个参数:SQL语句、参数数组及期望的返回类型。如果查询结果为空或不匹配指定的返回类型,则会抛出异常。 ##### 3. `queryForList()` 当需要获取多行数据时,可以使用`...

    DBUtil工具类

    它通常包含了一系列静态方法,可以执行SQL语句,处理结果集,进行数据库连接的创建、管理和关闭等。这样的工具类在DAO(数据访问对象)层与数据库交互时起着至关重要的作用,使得开发者不必频繁地关注数据库连接的...

    java分页实现(面向对象)

    对于更复杂的分页需求,比如排序、条件过滤,可以在SQL语句中添加相应的WHERE子句和ORDER BY子句。例如: ```sql SELECT * FROM table WHERE condition ORDER BY column LIMIT ?, ? ``` 在实际项目中,我们可能还...

    Spring Data JDBC与JDBC的区别

    5. **类型安全**: 使用JdbcTemplate的RowMapper,可以在编译时检查SQL查询返回的对象映射。 在示例代码中,`Dept`类代表一个实体,`DeptRepository`类展示了如何使用Spring Data JDBC。`JdbcTemplate`是Spring提供...

    spring boot jdbc的sql文例子

    在Spring Boot框架中,JDBC(Java Database Connectivity)是一个常用的数据访问组件,它允许开发者直接执行SQL语句来与数据库进行交互。本篇文章将详细探讨Spring Boot JDBC的使用,包括如何配置、创建数据源、执行...

    基于Spring-jdbc-update、query方法操作数据库

    8. **最佳实践**:在实际应用中,应遵循良好的编码习惯,如避免SQL注入,使用占位符参数而非字符串拼接,确保SQL语句的正确性和安全性。 总的来说,Spring的JDBC模块通过`update`和`query`方法为数据库操作提供了...

    SQLhelper文件

    params)`则返回一个对象列表,这些方法都会根据给定的SQL语句和参数执行查询,并将结果映射到Java对象上。 5. **事务管理**:SQLHelper通常也包含事务处理的相关方法,如`beginTransaction()`开始一个事务,`...

    S2dao架包集合

    - **SqlFile**:SQL脚本文件,通常存储在类路径下,可包含多个SQL语句,方便维护和管理。 - **BeanDesc**:描述Java对象的元数据,包括属性名、类型等信息。 - **OgnlExpression**:基于OGNL表达式引擎,用于动态...

    day39-Spring 18-Spring的JDBC模板:查询的操作

    在这个例子中,`getUsersByAge`方法使用了JdbcTemplate的query方法,传递了SQL查询语句、自定义的RowMapper以及查询参数。这样,我们就可以轻松地获取到符合条件的用户列表。 总的来说,Spring的JDBC模板通过提供一...

    第十二章 Spring4 支持参数命名的JdbcTemplate

    然后,我们使用`NamedParameterJdbcTemplate`的`query`方法执行查询,其中SQL语句中的`:userId`和`:username`对应于参数源中的键。 ### 五、异常处理与事务管理 Spring 4中的JdbcTemplate继承自JDBC抽象层,因此也...

Global site tag (gtag.js) - Google Analytics