反射实现增删改查(DAO层)——查询数据

先贴出代码,后续补充自己的思路、配置文件、使用方式:
/**
     *
     * 数据查询
     *
     */
    @Override
    public List<?> queryObject(List<Map<String, Object>> params,
            String tableName) {
        List<Object> objectList = new ArrayList<Object>();
        StringBuilder sql = new StringBuilder("SELECT * FROM " + tableName
                + " WHERE 1=1");
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            connection = DBConnection.getConnection();
            if (params != null && params.size() > 0) {
                for (int i = 0; i < params.size(); i++) {
                    Map<String, Object> map = params.get(i);
                    sql.append(" AND  " + map.get("name") + " "
                            + map.get("rela") + " " + map.get("value") + " ");
                }
            }
            preparedStatement = connection.prepareStatement(sql.toString());

            resultSet = preparedStatement.executeQuery();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            // 获取数据列数
            int columnsCount = resultSetMetaData.getColumnCount();
            Field field = null;
            Object object = null;
            while (resultSet.next()) {
                /**
                 * 获取实例化对象
                 */
                object = objectClass.newInstance();

                String columnName = null;
                String columnTypeName = null;
                String columnValue = null;

                for (int i = 1; i <= columnsCount; i++) {
                    columnName = resultSetMetaData.getColumnName(i);
                    columnTypeName = resultSetMetaData.getColumnTypeName(i);
                    columnValue = resultSet.getString(i);
                    field = object.getClass().getDeclaredField(columnName);
                    field.setAccessible(true);
                    switch (columnTypeName) {
                    case "INT":
                        field.set(object, Integer.parseInt(columnValue));
                        break;
                    case "VARCHAR":
                        field.set(object, columnValue);
                        break;
                    case "FLOAT":
                        field.set(object, Float.parseFloat(columnValue));
                        break;
                    case "Date":
                        field.set(object,
                                new SimpleDateFormat().parse(columnValue));
                        break;
                    }

                }
                objectList.add(object);

            }

        } catch (SQLException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } finally {
            DBConnection.close(connection, preparedStatement, resultSet);
        }
        return objectList;
    }

原文地址:https://www.cnblogs.com/caoleiCoding/p/9061938.html

时间: 2024-10-12 03:53:59

反射实现增删改查(DAO层)——查询数据的相关文章

【黑马Android】(04)数据库的创建和sql语句增删改查/LinearLayout展示列表数据/ListView的使用和BaseAdater/内容提供者创建

数据库的创建和sql语句增删改查 1. 加载驱动. 2. 连接数据库. 3. 操作数据库. 创建表: create table person( _id integer primary key, name varchar(20), age integer ); 添加: insert into person(name, age) values('lisi', 19); 删除: delete from person where _id = 1; 修改: update person set name =

mysql 增删改查,表查询(重点)

十一.数据的增删改: 本节重点: 插入数据 INSERT 更新数据 UPDATE 删除数据 DELETE 再来回顾一下之前我们练过的一些操作,相信大家都对插入数据.更新数据.删除数据有了全面的认识.那么在mysql中其实最重要的不是这三大操作,而是查数据最重要,下节课知晓 一. 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 1.使用INSERT实现数据的插入 2.UPDATE实现数据的更新 3.使用DELETE实现数据的删除 4.使用SELECT查询数据以及.

Mybatis 接口方式对数据的增删改查 一对一关联查询

数据库中有两个表 student 和studentInfo student表中的字段和数据 studentInfo表中的字段 ok数据库说完了,开始建立一个项目,对数据库中的数据进行操作吧 新建java项目,将mybatis的jar包和oracle数据库的访问包导入 建立几个需要用的包 entities, dao,util , test建立映射文件(.xml)和db.properties文件 db.properties: mybatis-config.xml: <?xml version="

反射实现增删改查(DAO层)——删除数据

先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 删除数据 */ @Override public void deleteObject(List<Map<String, Object>> params, String tableName) { StringBuilder sql = new StringBuilder( "DELETE FROM order_info WHERE 1=1 "); Connection connection =

反射实现增删改查(DAO层)——修改数据

先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * * 修改数据 * */ @Override public void updateObject(Object object, String tableName) { StringBuilder sql = new StringBuilder("UPDATE " + tableName + " SET "); Connection connection = null; PreparedStatement

反射实现增删改查(DAO层)——插入数据

先贴出代码,后续补充自己的思路.配置文件.使用方式: /** * 插入数据 */ @Override public void addObject(Object object, String tableName) { StringBuilder sql = new StringBuilder("INSERT " + tableName + " VALUES("); Connection connection = null; PreparedStatement prep

反射实现数据库增删改查DAO及DAOImpl源代码(二)

配置文件源码 配置文件主要用于配置数据库对象(javaBean),配置表名,配置查询条件,配置删除条件 文件名称:objectConfigPath.properties 这个配置文件里面配置的是另外一个配置文件的文件路径 objectConfigPath=com/javasm/supermarket/dao/config/order/objectConfig.properties 文件名称:objectConfig.properties 这个配置文件是本项目很多实现的关键,配置文件中有备注,说的

10.17数据库的增删改查(简单查询)

1.创建数据库create database test2; 2.删除数据库drop database test2; 3.创建表create table ceshi( ids int auto_increment primary key, uid varchar(20), name varchar(20), class varchar(20), foreign key (class)  references class(code) );create table class( code varcha

mysql表数据增删改查、子查询

//操作数据表中的记录 create table user2( id smallint unsigned primary key AUTO_INCREMENT, username varchar(20) not null, password varchar(20) not null, age tinyint not null default 10, sex boolean ) --insert-- insert user2 values(null,'孙千','123',25,1);//自增序列可