`

Java-JDBC层 大量的Setter/Getter方法解决办法

阅读更多

话不多说,直接上代码。两代关于JDBC的代码,结果集到类对象的赋值。可直接使用于项目中。
作用:避免于大量的Setter/Getter的使用。

结果集到单一对象,一般用于查询单行记录时使用。

 public static <T> T toOneRowObject(ResultSet rs, Class<T> beanClass) throws Exception {
        T bean = null;
        ResultSetMetaData metaData = rs.getMetaData();
        if (rs.next()) {
            bean = beanClass.newInstance();
            int count = metaData.getColumnCount();
            Object columnValue = "";
            for (int idx = 1; idx <= count; idx++) {
                columnValue = rs.getObject(idx);
                switch(metaData.getColumnType(idx)){
                    case Types.TIMESTAMP:
                    case Types.TIME:
                    case Types.DATE:
                        columnValue = String.valueOf(rs.getObject(idx));
                        break;
                    case Types.BIGINT:
                        columnValue = rs.getInt(idx);
                        break;
                }
                PropertyUtils.setProperty(bean, metaData.getColumnLabel(idx), columnValue);
            }
        }
        return bean;
    }



结果集到多对象,使用于查询多行记录集。

public static <T> Vector<T> toMultiRowObject(ResultSet rs,Class<T> beanClass) throws Exception{
        Vector<T> vc = new Vector<T>();
        ResultSetMetaData metaData = rs.getMetaData();
        int count = metaData.getColumnCount();
        T bean = null;
        Object columnValue = "";
        try{
            while(rs.next()){
                bean = beanClass.newInstance();
                for(int idx = 1;idx <= count;idx++){
                    columnValue = rs.getObject(idx);
                    switch(metaData.getColumnType(idx)){
                        case Types.TIMESTAMP:
                        case Types.TIME:
                        case Types.DATE:
                            columnValue = String.valueOf(rs.getObject(idx));
                            break;
                        case Types.BIGINT:
                            columnValue = rs.getInt(idx);
                            break;
                    }
                    PropertyUtils.setProperty(bean, metaData.getColumnLabel(idx), columnValue);
                }
                vc.add(bean);
            }
        }catch(Exception e){
            throw new Exception("column value : " + columnValue, e);
        }
        
        return vc;
    }



Demo清单:

        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(DBURL,DBUSER,DBPWD);
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * From t_user");
            Vector vc = DBHelper.toMultiRowObject(rs, UserBean.class);
        } catch (Exception e) {
            log.error(sql.toString(), e);
            e.printStackTrace();
        } finally {
            conn.close();
        }

 

分享到:
评论

相关推荐

    mysql-connector-java-5.1.4.jar.rar

    这些实体类代表了数据库中的表,它们包含了字段(对应表的列)和基本的 getter/setter 方法。而 XML 映射文件则定义了 SQL 查询、插入、更新和删除语句,以及如何将这些 SQL 语句与实体类关联。 MyBatis 是一个优秀...

    springboot整合mybatis-plus逆向工程的实现

    在`pom.xml`文件中,除了SpringBoot的核心依赖如`spring-boot-starter-web`、测试依赖`spring-boot-starter-test`和MySQL驱动外,还需要引入Lombok以简化对象的getter和setter方法。具体依赖如下: ```xml &lt;!-- ...

    mybatis-generator-core

    在Java开发中,MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。而Mybatis Generator Core则是MyBatis的一个辅助工具,通过简单的...

    spring-boot-starter-mybatis-spring-boot-1.3.3.tar.gz

    // getter 和 setter 省略 } ``` - Mapper接口`UserMapper.java`: ```java public interface UserMapper { User selectUser(Long id); // 其他方法 } ``` - Mapper XML文件`UserMapper.xml`: ```xml...

    Struts2+spring2+hibernate3实例源码-java源码

    // Getter和Setter方法 // ... } ``` - **User.hbm.xml**:Hibernate映射文件,用于定义对象和表之间的映射关系。 ```xml &lt;!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//...

    Java实验七-Java JDBC数据库操作实验.doc

    在这些类中,我们不仅需要实现属性的getter和setter方法,还要编写测试类来验证各个类的功能。 在实验的另一个部分,我们创建了`Monkey`和`People`类,`Monkey`类有一个`speak`方法,而`People`类继承自`Monkey`并...

    利用java的jdbc连接数据库中间件

    Java Bean遵循一定的命名和设计规范,具备属性、getter/setter方法以及构造函数。在这个场景下,Bean可能会有如下的属性: 1. **username**:数据库用户名。 2. **password**:数据库密码。 3. **url**:数据库连接...

    spring-boot 集成 tk mybatis

    // getter 和 setter 方法 } ``` 现在,你可以在服务类中通过 `@Autowired` 注解注入 Mapper 实例,然后调用其方法进行数据库操作: ```java @Service public class UserService { @Autowired private ...

    java-oop-base.zip

    4. **Lombok**: Lombok是一个Java库,能通过注解自动处理getter、setter、构造器等常见冗余代码,提高代码的简洁性和可读性。例如,使用`@Data`注解可以为类自动生成所有必需的getter和setter。 5. **MySQL**: ...

    SpringBoot第 14 讲:SpringBoot+MyBatisPlus(代码)

    // 其他属性、getter和setter方法 } ``` 在Mapper接口中,我们可以定义一些基本的CRUD方法,MyBatisPlus会自动提供实现: ```java public interface UserMapper extends BaseMapper&lt;User&gt; { // 自定义方法,如:...

    【Java-框架-Mybatis】(01) - 文件

    - 参数和结果自动映射:Mybatis可以自动将Java对象映射到SQL的参数和结果集中,无需手动编写getter/setter方法。 - 缓存机制:Mybatis内置了本地缓存和二级缓存,可提高数据访问速度。 - 自动事务管理:Mybatis...

    java-supermarket.zip

    实体类通常会使用getter和setter方法,方便其他层进行数据操作。 综上所述,"java-supermarket.zip"提供的网上购物商城系统,利用MVC架构和Spring+MyBatis技术栈,实现了高效、灵活的电商应用。从设计到实现,这个...

    mybatis-generator的使用

    实体类将包含字段和getter/setter方法,DAO接口将包含如`selectByPrimaryKey`、`insert`等方法,而Mapper XML文件则包含了与这些方法对应的SQL语句。 使用MyBatis Generator不仅可以节省大量编码时间,还可以确保...

    Springboot增删改查MySQL

    例如,如果有一个名为`User`的表,我们可以创建一个`User`类,包含与表字段相对应的属性和getter/setter方法。 ```java public class User { private Long id; private String name; private String email; ...

    Struts2整合Hibernate32开发注册登录系统

    - 创建`LoginAction.java`类,用于处理登录请求并调用相应的服务层方法。 ```java public class LoginAction extends ActionSupport { private User user = new User(); private UserService userService; ...

    Java项目开发-第6阶段--模型层设计与实现.pptx

    DAO类是模型层与数据库之间的一个抽象层,它封装了JDBC(Java Database Connectivity)操作,提供更新和查询数据的接口。学习如何创建和使用BaseDao类是理解数据库访问的重要步骤,这涉及到SQL语句的编写、预编译、...

    Student managerment

    3、创建实体类Student,根据业务提供需要的构造方法和setter/getter方法。 4、创建BaseDao类,实现数据库连接和关闭功能。 5、创建DAO接口StudentDao,定义所有方法。 6、创建DAO实现类StdudentDaoImpl,继承...

    java-DAO分层解析.pdf

    - 属性使用`private`修饰,提供`getter`和`setter`方法。 - 可选地,实现`Serializable`接口以支持分布式应用。 - 可选地,重写`equals()`, `toString()`, `hashCode()`方法。 5. **数据层工厂类(DAOFactory)*...

    springboot-mybatisplus-demo.zip

    // 省略getter和setter } // UserMapper.java (Mapper接口) public interface UserMapper extends BaseMapper&lt;User&gt; { } ``` 六、配置MyBatisPlus 在SpringBoot的配置类中,注入MyBatisPlus配置,开启分页功能:...

Global site tag (gtag.js) - Google Analytics