`
汉唐铁骑破虏用刀
  • 浏览: 31977 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

实用JDBC数据库查询封装

阅读更多
很实用的封装,适用于仅使用JDBC操作数据库的时候。查询数据库后直接封装javabean对象到集合中,免去了繁琐的迭代每条记录然后逐个取字段封装javaBean.

  当然是存在很多的不方便的地方的,比如数据库字段名和javabean属性名需要一致的情况下才能被封装到javabean中, 以下代码中也还缺少判断javabean中的属性是否对应在数据库查询中存在, 但是这个看看API就可以当场搞定的事情。不再废话

 public static List queryList(String preSql, String className,
            Connection con, int offset, int pagelength) throws PortalException
    {        
        List beanbasket = new ArrayList();
        String[] columns = null;        
        if (con == null)
        {
            con = getConnection();
        }
        //查询出的结果集
        ResultSet rs = null;
        PreparedStatement pstmt = null;
        try
        {
            pstmt = con.prepareStatement(preSql);
            if (pagelength != 0)
            {
                int endnum = offset+pagelength;
                int stratnum = offset+1;
                pstmt.setInt(1, endnum); 
                pstmt.setInt(2, stratnum); 
            }
            LogFactory.debug("will query the data!!");
            rs = pstmt.executeQuery();
            LogFactory.debug("query the data success!!!");
            
            ResultSetMetaData metedata = rs.getMetaData();
            //获取查询出的字段总数
			int i = metedata.getColumnCount();
			//获取数据库表中所有的字段名
			columns = new String[i];
			for (int j = 1; j < i+1; j++) 
			{ 
				columns[j-1] = metedata.getColumnName(j);
			}
            
            Class clazz = Class.forName(className);
            Field[] fields = clazz.getDeclaredFields();
            
            LogFactory.debug("the fields length is:"
                    + fields.length);

            while (rs.next())
            {

                Object obj = clazz.newInstance();

                for (Field f : fields)
                {	
                	//如果该字段在数据库中有存储
                	if(isContainField(f.getName(),columns)){
                		
	                    f.setAccessible(true);
	                    String strType = f.getType().toString();
	
	                    if (strType.indexOf("Long") != -1)
	                    {
	                        f.set(obj, rs.getLong(f.getName()));
	                    }
	                    else if (strType.indexOf("Integer") != -1
	                            || strType.indexOf("int") != -1)
	                    {
	                        f.set(obj, rs.getInt(f.getName()));
	                    }
	                    else if (strType.indexOf("String") != -1)
	                    {
	 	                       String s = rs.getString(f.getName());
	                       if(s!=null&&!s.equals("null"))
	                       { 
	                           s =s.trim();
	                       }
	                       else
	                       {
	                           s = "";
	                       }
	                       f.set(obj, s);
	                    }
	                    else if (strType.indexOf("Date") != -1)
	                    {
	                        f.set(obj, rs.getDate(f.getName()));
	                    }
	                    else if (strType.indexOf("Double") != -1)
	                    {
	                        f.set(obj, rs.getDouble(f.getName()));
	                    }
	                    else if (strType.indexOf("Float") != -1)
	                    {
	                        f.set(obj, rs.getFloat(f.getName()));
	                    }
	                    else
	                    {
	                        LogFactory.debug(
	                                 "this data type not support yet!");
	                        LogFactory.debug("this date type is"
	                                + f.getName());
	                       	                    }
                	
                }
                beanbasket.add(obj);
            }
        }
              catch (Exception ex)
        {
        }
        
        LogFactory.info("Exit DBProxy.querylist()");
        return beanbasket;
    }

分享到:
评论

相关推荐

    eclipse java通过jdbc连接数据库脚本

    eclipse java jdbc脚本封装,增删改查,自己封装并工作中实用过,实用性很强

    一个简单实用的数据库操作框架

     把数据库中的一张或多张表抽象成类Table,这个类中提供对表的添加,修改,删除的JDBC封装。  将数据库表中的一条记录抽象成类Row,这个类用HashMap保存关系数据库中表格中一行数据的字段名和值并提供一些相关操作...

    jdbc-odbc 连接2005数据库

    jdbc-odbc连接数据库示例,封装了增加删除修改操作,是我一个程序里使用的一个类,简单实用

    JDBC工具类(针对mySQL)

    旨在方便用户将数据库的内容转化为Vector、ArrayList容器的操作过程,此类中提供了多种方法从而简化了对ResultSet结果集的转化成本,结合系统提供的ResultSetMetaData类实现了通过结果集查询表列数目、名称、属性...

    Java_JDBC由浅入深

    比较实用,基础 目录 第一节 整理目的 3 第二节 jdbc的概念 3 2.1概念 3 2.2 Jdbc与应用程序的关系 3 2.3 数据库的连接步骤 4 2.4 Quick Start 4 第三节 如何与数据库建立连接 6 3.1 注册驱动 6 3.2 建立数据库的...

    Fire使用说明

    由JSPGen软件开发框架第4.0版时提出(前身为JSPGen3.0时的数据库连接管理工具),是对传统JDBC数据库操作进行的二次封装,支持数据缓存处理、支持在同一项目中对多数据库进行操作,更重要的是对一些连接池进行了集中...

    Apache Commons DbUtils 包是一组用于简化 JDBC 开发的 Java 实用程序类

    Apache Commons DbUtils 包是一组用于简化 JDBC 开发的 Java 实用程序类。原则上这不能说是一个持久层框架,它提供了一些Jdbc的操作封装来简化数据查询和记录读取操作

    JDBC 连接池

    这是一个非常实用的JDBC工具类,这些封装好的方法很通用。。拿到任何地方,只要是连接oracle数据库,都可以排上用场!!!

    编写通用Dao

    很多程序员喜欢利用JDBC对数据库进行操作,而此处的通用Dao对JDBC操作数据库一些通用的操作进行了封装,使其直接调用,方便而实用。

    Java基础(韩顺平版)笔记详

    JDBC数据库操作 适用人群 计算机专业新生和初学者,希望系统学习Java编程。 在校学生,需要为相关课程准备或复习。 自学者,希望通过自学掌握Java编程技能。 有经验的开发者,希望重温Java基础知识或参考韩顺平的...

    java开发手册、java编程和开发

    高级技术篇介绍网络编程的基本知识、输入/输出流的使用和jdbc数据库开发技术。  无论对于java的初学者,还是有一定基础的高级用户,本书都是一本难得的参考书。本书非常适合使用java进行编程和开发的本科生、研究生...

    Java开发手册

    高级技术篇介绍网络编程的基本知识、输入/输出流的使用和JDBC数据库开发技术。, 无论对于Java的初学者,还是有一定基础的高级用户,本书都是一本难得的参考书。本书非常适合使用Java进行编程和开发的本科生、研究生...

    java开发手册

    高级技术篇介绍网络编程的基本知识、输入/输出流的使用和JDBC数据库开发技术。, 无论对于Java的初学者,还是有一定基础的高级用户,本书都是一本难得的参考书。本书非常适合使用Java进行编程和开发的本科生、研究生...

    commons-dbutils-1.3.zip

    DBUtils是Java编程中的数据库操作实用工具,小巧简单实用。 DBUtils封装了对JDBC的操作,简化了JDBC操作,减少代码量。

    DBUtils框架jar包

    DBUtils是java编程中的数据库操作实用工具,小巧简单实用。 DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Global site tag (gtag.js) - Google Analytics