iBatis是一种半ORM,为程序员提供了较大的灵活性,今天就展示一在iBatis中获取表元数据的例子,
所谓表的元数据就就是关于表的数据的数据,在一个特殊的应用场合需要查出了指定SQL中包含的字段的信息,
包括:字段类型和长度定义,
我这里的sqlMapClient是由Spring注入的。
public void ShowFieldType(String sql) throws Exception{
DataSource dataSource = this.sqlMapClient.getDataSource();
Connection con = dataSource.getConnection();
Statement stmt = null;
ResultSet rs = null;
try {
stmt = con.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsMetaData = rs.getMetaData();
int columnCount = rsMetaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
logger.info("field Name:"+ rsMetaData.getColumnName(i)+
" field Type:"+rsMetaData.getColumnTypeName(i)+
" size:"+rsMetaData.getColumnDisplaySize(i));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
rs.close();
stmt.close();
con.close();
}
}
测试类:
ITestDBDao dao = (ITestDBDao)SystemBeans.getBean("testdbDaoDean");
//给定一个SQL,为了提高效率不查数据,因此使用了一个where 1=2条件
dao.ShowFieldType("select * from ices_cc_data where 1=2");
运行结果:
INFO [main] [2011-09-04 15:57:18] field Name:ID field Type:INTEGER size:11
INFO [main] [2011-09-04 15:57:18] field Name:NE_NAME field Type:VARCHAR size:30
INFO [main] [2011-09-04 15:57:18] field Name:CYCLE field Type:BIGINT UNSIGNED size:20
INFO [main] [2011-09-04 15:57:18] field Name:CC_ID field Type:INTEGER size:11
INFO [main] [2011-09-04 15:57:18] field Name:CALL_PHASE field Type:INTEGER size:11
INFO [main] [2011-09-04 15:57:18] field Name:CC_TOTAL_VALUE field Type:INTEGER size:11
INFO [main] [2011-09-04 15:57:18] field Name:CC_VALUE field Type:INTEGER size:11
运行结果中列出了ices_cc_data表的所有字段名和字段长度
其实 SqlMapClient提供了getCurrentConnection()方法,但是测试发现,该方法返回的结果为null,这一点很奇怪,
所以只好返回DataSource()然后再获取一个Connection()
分享到:
相关推荐
在Ibatis中,可能会有相关的服务定义和服务实现的元数据,帮助系统在运行时自动发现和加载Ibatis的相关组件。 `com`目录代表了Java的包结构,Ibatis的源代码主要位于这里。Ibatis的核心组件包括`...
`META-INF`目录是Java应用的标准元数据目录,其中可能包含类路径、服务提供者、许可证等信息,对于理解iBatis的整体结构至关重要。 `com`目录下则包含了iBatis的源代码组织结构,主要涉及以下几个核心组件: 1. **...
例如,可以利用Java的JDBC API连接SQLServer,查询元数据获取表结构,然后根据这些信息生成Ibatis相关代码。这种方式灵活性高,但需要一定的编程基础。 4. **集成构建工具**:在大型项目中,代码生成通常作为构建...
不同于直接将数据库表和类进行元数据映射的ORM工具,iBATIS的核心是SQL映射。它允许开发者编写SQL语句,并将参数和结果映射到对象的属性上。通过这种方式,iBATIS提供了一种更为灵活的映射机制,减少对数据库模型和...
- `META-INF`: 存储元数据,如服务配置和服务提供者信息。 - `simple_example`: 提供了一个简单的示例,帮助开发者快速上手。 - `src`: 源代码目录,包括Java类和XML配置文件。 - `doc`: 文档目录,可能包含API...
书中既详实地介绍了iBATIS的设计理念和基础知识,也讨论了动态SQL、高速缓存、DAD框架等高级主题,还讲解了iBATIS在实际开发中的应用。书的最后给出了一个设计优雅、层次清晰的示例程序JGameStore,该示例涵盖全书的...
Ibatis 是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,从而简化了Java应用程序与数据库的交互。Ibatis 的核心知识点主要包括以下几个方面: 1. **SQL Map XML 映射文件** SQL Map XML ...
至于元对象的概念,指的是将类的属性视为对象,这种设计可以实现元数据管理,有助于在应用层面上统一处理类的属性,例如动态生成输入界面。通过这种方式,可以减少手动编写UI代码,提高开发效率。 总的来说,Ibatis...
**Ibatis 概述** Ibatis 是一个轻量级的持久化框架,它...通过以上步骤,Ibatis 可以通过 JNDI 查找到应用程序服务器中配置的数据源,实现了数据库连接的集中管理和透明化。这种方式提高了系统的可维护性和可扩展性。
6. **元素**:配置数据源,用于获取数据库连接。 7. **元素**:包含具体的SQL映射规则。 #### SQLMap XML文件详解 - **Mapped Statements**:定义了如何执行SQL语句的方法。可以通过不同的参数类型和返回类型来...
Java档案(JAR)文件是一种归档格式,用于存储Java类、资源和元数据,通常用于分发Java应用程序或库。iBatis的jar包中包含了所有必要的类和库,使得开发者能够在项目中直接引用,无需关注其内部实现细节。 在iBatis...
从压缩包子文件的文件名称列表来看,"META-INF"通常包含项目元数据,如Maven或Gradle的配置信息,而"com"是Java包名的一部分,暗示了源码包中包含的Java类和相关组件。这些源码可以提供更深入的理解,例如具体的实现...
`META-INF`目录是Java类加载系统用来查找元数据的地方,可能包含服务提供者接口(SPI)配置或其他元数据。最后,`com`目录表示Java的包结构,iBatis的源代码应该就位于这个目录下的某个子包中。 深入iBatis源码,...
- **下载 JAR 文件**:获取最新版本的 iBATIS SQL Maps JAR 文件及其依赖项。 - **配置环境**:在项目中添加必要的 JAR 文件,并配置相关类路径。 - **设置 XML 配置文件**:创建 XML 文件来配置数据源、事务管理器...
在Java中,注解是一种元数据,可以提供关于代码的额外信息。在Spring框架中,注解如`@Service`、`@Repository`和`@Controller`分别用于标记业务服务类、数据访问类和控制器类,简化了配置文件。同时,iBatis也支持...
- **ResultMap**是iBATIS中最强大的功能之一,用于定义复杂的映射规则,特别是当查询结果集包含多表关联信息时非常有用。 - **基本类型的Result**:如String、Integer等基本数据类型可以直接映射到Java对象的属性上...