- 浏览: 2674189 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
我素熊猫:
66666666666666
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderL -
jonyzhou94:
1987_ming 写道1987_ming 写道System. ...
CXF框架入门实例 -
davidforit:
你那个“2004年Nutch创始人Doug Cutting基于 ...
《Hadoop基础教程》之初识Hadoop -
masuweng:
我的就是这么弄得,到了页面还是那个格式的 。
JSONObject转换JSON--将Date转换为指定格式 -
masuweng:
∑
JSONObject转换JSON--将Date转换为指定格式
做JAVA的人玩JDBC肯定已经很熟练了,像DriverManager、Connection、ResultSet、Statement这些基本类大家肯定很常用啦,我不赘述那些诸如注册JDBC驱动、创建连接、获取数据集的API了,在这我介绍一些写框架时常用的API,大家共同学习吧。
- ResultSetMetaData获取ResultSet对象的元数据信息
以Hibernate的Session.get(class,id)为例,该api是根据主键id获取class映射表的一条数据,这里只要class参数传入不同,则获取的表也不同,然而数据库那么多表,不同表的字段个数又不同,如何准确把表字段映射到class就是关键了,这里ResultSetMetaData就可以办到。
下面是如何获取ResultSetMetaData并且使用该对象内的一些常用方法:
ResultSet rs = ...... //获取数据集合 ResultSetMetaData meta= rs .getMetaData();//获取ResultSetMetaData对象 int columnCount = meta.getColumnCount();//获取ResultSet总共返回了多少个列 for(int columnIndex=1;columnIndex<=columnCount;columnIndex++){ resultData.getColumnName(columnIndex);//列名 resultData.getColumnType(columnIndex);//列数据类型(INT之类的) resultData.getColumnTypeName(columnIndex);//列数据类型名 resultData.getColumnClassName(columnIndex);//列java类型名 resultData.getColumnDisplaySize(columnIndex);列大小 }
从上面的代码可以看出,ResultSetMetaData能获取查询返回的数据集的内置信息,使用ResultSetMetaData能做很多事,
比如可以获取指定表的所有列信息并且可以通过IO创建对应的JAVABean;可以用反射给JAVABean自动赋数据表中的值等等。
- DatabaseMetaData获取数据库元数据信息
如果要想获取当前连接的数据库的版本、驱动号和JDBC连接信息就可以使用DatabaseMetaData了,看下面的代码即可明白:
Connection conn = ...... DatabaseMetaData metaData = conn.getMetaData(); try { System.out.println("数据库产品名:"+metaData.getDatabaseProductName()); System.out.println("数据库版本号:"+metaData.getDatabaseProductVersion()); System.out.println("数据库驱动名:"+metaData.getDriverName()); System.out.println("数据库驱动版本号:"+metaData.getDriverVersion()); System.out.println("当前连接的URL:"+metaData.getURL()); System.out.println("当前连接的用户名:"+metaData.getUserName()); } catch (Exception e) { e.printStackTrace(); }
还可以通过DatabaseMetaData获取指定数据库的所有表名,下面是获取MYSQL数据库表的代码,其它数据库代码实现有出入:
public static final List<String> getMySQLTableNames(Connection conn,String dataBaseName){ DatabaseMetaData metaData = ...... ResultSet tableResult = null; try { tableResult = metaData.getTables(dataBaseName, null, null, null); } catch (SQLException e) { } List<String> lstTableNames = null; try { while(tableResult.next()){ if(lstTableNames==null){ lstTableNames = new ArrayList<String>(); } lstTableNames.add(tableResult.getString("TABLE_NAME")); } } catch (SQLException e1) { } return lstTableNames; }
其实如果ResultSetMetaData和DatabaseMetaData配合就能自动将数据库的表、列信息映射到Javabean中,首先通过DatabaseMetaData获取当前数据库的所有表信息,然后通过ResultSetMetaData查询每张表的所有列信息即可,下面是生成POJO的一个主方法,具体IO相关代码就不贴了大家看看就行了。
public void generatePojo(){ Connection conn = JDBCConnectionUtil.getConnection(url, user, password); List<String> lstTable = JDBCMetaDataUtil.getMySQLTableNames(conn, JDBCMetaDataUtil.getDatabaseName(conn)); String srcName = "src"; String packageName = "com.bless.commons.jdbc.demo"; String className = null; for (String string : lstTable) { className = string; JavaBeanUtil.createClass(srcName, packageName, className.substring(0, 1).toUpperCase()+className.substring(1)); List<DatabaseColumnBean> lstColumn = JDBCMetaDataUtil.getMySQLColumnsByTableName(conn, JDBCMetaDataUtil.getDatabaseName(conn), className); for (DatabaseColumnBean databaseColumnBean : lstColumn) { JavaBeanUtil.createField(srcName, packageName, className, databaseColumnBean.getColumnName(), databaseColumnBean.getJavaTypeName(), "private", true); } } }
- Connection.getCatalog()获取当前连接的数据库名
public static final String getDatabaseName(Connection conn){ try { return conn.getCatalog(); } catch (SQLException e) { } }
- PreparedStatement.RETURN_GENERATED_KEYS获取保存操作自动生成的主键
public static final PreparedStatement getPreparedStatementWithAutoGenerateKeys(Connection conn,String sql){ try { return conn.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS); } catch (SQLException e) { } }
public void inserDemo(){ String sql = "INSERT INTO jeesys.accounts (delete_flag, CODE, PASSWORD, role_flag) VALUES (3, 'code', 'password', 3)"; PreparedStatement pstm = JDBCConnectionUtil.getPreparedStatementWithAutoGenerateKeys(JDBCConnectionUtil.getConnection(url, user, password), sql); try { pstm.executeUpdate(); ResultSet resultSet = pstm.getGeneratedKeys(); while(resultSet.next()){ System.out.println(resultSet.getObject(1)); //打印出返回的主键值 } } catch (SQLException e) { } }
发表评论
-
关于HQL和JDBC SQL中字段相除的一点小经验
2016-02-25 11:42 3349最近在做一个功能,产 ... -
Java异常那些不得不说的事
2014-11-29 12:09 17085一、在finally块中做数据回收操作 比如数据库连接都 ... -
基于Java的通用图表接口设计与实现
2014-02-26 18:00 15102现如今,互联网上充斥 ... -
JSONObject转换JSON--将Date转换为指定格式
2014-02-18 22:12 77150项目中,经常会用JSONObject插件将JavaBean或 ... -
Java开发笔记
2012-12-13 10:30 18021、Map<key,value>的remove ... -
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1解决方案
2012-09-12 16:03 28123文章摘自:http://blog.csdn.net/yangw ... -
Java反射常用机制
2012-08-04 17:58 8390首先要求大家对Java泛型知识有所了解,因为程序代码中大量使 ... -
JSP实现指定盘符路径下的图片显示
2012-02-14 09:54 23578开发人员都知道<img src="" ... -
Java实现文件上传
2012-02-13 23:57 319755最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上 ... -
commons-fileupload实现文件上传功能实例
2012-01-17 21:50 67420Apache提供的commons-fileupload ja ... -
hibernate常用API详解
2011-12-27 15:55 17957根据个人使用Hibernate的经验,介绍一下Hiber ... -
spring/hibernate/struts2常见异常总结
2011-10-21 15:52 3597Spring ①ClassNotFoundExcep ... -
eclipse插件hibernate tools安装
2011-09-09 17:34 7571eclipse helios(3.6)版 1.启动 ... -
汉字转拼音pinyin4j
2011-09-03 09:57 2159以前在项目中遇到汉字转拼音的情况,于是在网上找到了pinyi ... -
J2EE监听器和过滤器基础
2011-09-02 16:56 7336Servlet程序由Servlet,Filter和Liste ... -
java通信之Socket通信基础
2011-06-21 21:08 5987正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数 ... -
Java通信之URL通信基础
2011-06-21 11:15 3447java对网络通信以及提供了比较全面的jdk支持,java.n ... -
java集合排序笔记
2011-06-15 15:21 1624public class CollectionDemo imp ... -
Java IO笔记
2011-06-15 14:23 1073public static void main(String ... -
java web项目整体异常处理机制
2011-06-08 22:04 13058在实际的j2ee项目中,系 ...
相关推荐
Java开发中的常用API是程序员日常工作中不可或缺的一部分,它包含了各种工具类、接口和类,用于实现各种功能。这里我们主要关注几个重要的API组件,包括W3CSchool的基础教程,MySQL5中文参考手册,jQuery 1.8.3的...
- **数据库驱动**: 除了JDK自带的JDBC相关的包之外,还需要根据使用的数据库类型导入相应的数据库驱动。例如,对于MySQL数据库,需要导入MySQL的JDBC驱动。 #### 三、第一个JDBC程序 1. **环境搭建**: 首先,在...
除此之外,还有一些可能包含在"java常用jar包"中的其他重要库: 1. **Apache Commons**: Apache Commons包含一系列实用工具类,如Collections、IO、Lang等,提供各种通用功能,如文件操作、字符串处理、数学计算等...
总结起来,"JAVA中常用的jar包"涵盖了从提高JSP开发效率的标准标签库JSTL,到数据库连接的JDBC驱动,以及众多的第三方库。理解并熟练使用这些JAR包对于任何Java开发者来说都是至关重要的,它们能帮助我们编写更简洁...
这些驱动包提供了与特定数据库系统的通信桥梁,使得Java程序能够通过标准的JDBC API执行SQL查询和管理数据库事务。 例如,`mysql-connector-java.jar`是MySQL官方提供的Java驱动,允许Java应用连接到MySQL服务器。...
除此之外,JDK1.6还包含了许多其他功能,如数据库连接(JDBC)、JavaBeans、JavaMail等。尽管JDK版本已经更新到8及以上,但1.6版本的API仍然是许多遗留系统和教程的基础,了解其工作原理对深入理解Java生态至关重要...
这些驱动提供了一个标准化的API,使得开发者无需关心具体的数据库实现细节,只需编写符合JDBC规范的代码即可。 接着,Spring框架的jar包在JavaWeb开发中扮演着核心角色。Spring的核心jar包包括`spring-core.jar`、`...
例如,MySQL的JDBC驱动(mysql-connector-java.jar)允许Java程序通过Java Database Connectivity (JDBC) API与MySQL数据库进行交互。同样,Oracle的ojdbc.jar文件则用于连接Oracle数据库。这些驱动程序实现了JDBC...
本文将详细介绍几种常用的Java连接SQL数据库的方式,并重点解析JDBC-ODBC桥接方式及其具体实现。 #### JDBC-ODBC桥接 JDBC-ODBC桥接是一种早期用于Java程序连接数据库的技术,它通过ODBC(Open Database ...
除此之外,这个压缩包可能还包含了其他一些常用的Java库,比如: - **Servlet API**:这是Java Web开发的基础,定义了服务器端的接口和类,用于处理HTTP请求和响应。常见的实现有Tomcat和Jetty提供的servlet-api....
本总结将深入探讨JavaWeb的核心知识点,包括Servlet、JSP、MVC模式、JDBC以及常用的开发工具。 首先,Servlet是JavaWeb的基础,它是Java编写服务器端程序的标准接口。Servlet用于接收和响应客户端请求,处理数据并...
在本讨论中,我们将深入探讨"Java Web开发常用地址"这一主题,并结合标签"源码"和"工具"来解析相关的知识要点。 首先,Java Web开发的基础是Java Servlet API,它是Java EE(Enterprise Edition)的一部分,用于...
此外,文件列表中出现的“java笔记”虽然不直接与Oracle数据库紧密相关,但Java作为常用的后端开发语言,经常与Oracle配合使用,因此理解Java的JDBC(Java Database Connectivity)API,知道如何连接、操作Oracle...
JDBC(Java Database Connectivity)是一种用于执行 SQL 语句的 Java API,可以为多种关系数据库提供统一访问,它由一组用 Java 编程语言编写的接口和类组成。通过 JDBC,Java 应用程序可以连接到各种支持 JDBC 的...
除了Struts之外,这个压缩包可能还包括了其他常用的Java库,例如: 1. **Spring Framework**:这是一个全面的企业级应用开发框架,提供了依赖注入、AOP(面向切面编程)、数据访问、事务管理、MVC等多种功能。 2. ...
它实现了JDBC API,使得Java应用能够无缝连接到MySQL服务器。MySQL Connector/J支持多种认证方式,包括传统的MySQL Native Password,以及更安全的 caching_sha2_password等。此外,驱动还提供了连接池管理、事务...
SPI 机制的核心思想是将装配的控制权移到程序之外,在模块化设计中这个机制尤其重要,能够实现解耦。 SPI 机制的实现原理是通过在 classpath 下的 META-INF/services/ 目录中创建一个以服务接口命名的文件,该文件...