- 浏览: 3500625 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
将数据库脚本转换成ibatis代码自动生成脚本
表结构:
create table tab_hr_emp_education(
edu_id varchar2(10) not null,
emp_id varchar2(10) not null,
school varchar2(50) not null,
record varchar2(50) not null,
study_sys char(1) not null,
study_context varchar2(2000),
startdate date,
enddate date,
relate_person varchar2(30),
relate_phone varchar2(40),
remark varchar2(2000)
);
转换后的结果:
<table tableName="tab_hr_emp_education" domainObjectName="HrEmpEducationBean">
<property name="useActualColumnNames" value="false"/>
<columnOverride column="edu_id" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="emp_id" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="school" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="record" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="study_sys" jdbcType="CHAR" javaType="String"/>
<columnOverride column="study_context" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="startdate" jdbcType="Date" javaType="java.util.Date"/>
<columnOverride column="enddate" jdbcType="Date" javaType="java.util.Date"/>
<columnOverride column="relate_person" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="relate_phone" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="remark" jdbcType="VARCHAR2" javaType="String"/>
</table>
完整的abatorConfig1.xml文件
<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE abatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN"
"http://ibatis.apache.org/dtd/abator-config_1_0.dtd
">
<!-- Notice(should set true): SqlMapConfig.xml/sqlMapConfig/settings/useStatementNamespaces="true" -->
<abatorConfiguration>
<abatorContext id="forTest">
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@192.168.10.84:1521:ora10"
userId="nnbh_spro"
password="nnbh_spro">
<classPathEntry location="D:\ibaits\classes12.jar" />
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<javaModelGenerator targetPackage="com.forlink.cc.entity.bean"
targetProject="D:\CVS_ROOT\impl\java\ver1.0\apps\cc\src">
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<sqlMapGenerator targetPackage="sqlmap.autogenerate"
targetProject="D:\CVS_ROOT\impl\java\ver1.0\apps\conf\cc">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<daoGenerator type="GENERIC-CI" targetPackage="com.forlink.cc.entity.dao"
targetProject="D:\CVS_ROOT\impl\java\ver1.0\apps\cc\src">
<property name="enableSubPackages" value="false"/>
<property name="methodNameCalculator" value="default"/>
<property name="exampleMethodVisibility" value="public"/>
<property name="rootClass" value="com.forlink.cc.DAO"/>
</daoGenerator>
<table tableName="tab_hr_emp_education" domainObjectName="HrEmpEducationBean">
<property name="useActualColumnNames" value="false"/>
<columnOverride column="edu_id" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="emp_id" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="school" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="record" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="study_sys" jdbcType="CHAR" javaType="String"/>
<columnOverride column="study_context" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="startdate" jdbcType="Date" javaType="java.util.Date"/>
<columnOverride column="enddate" jdbcType="Date" javaType="java.util.Date"/>
<columnOverride column="relate_person" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="relate_phone" jdbcType="VARCHAR2" javaType="String"/>
<columnOverride column="remark" jdbcType="VARCHAR2" javaType="String"/>
</table>
</abatorContext>
</abatorConfiguration>
转换数据代码
public static void main(String[] args)
{
String xml = "";
try
{
File b = new File("D:\\1.sql");
BufferedReader bis = new BufferedReader(new FileReader(b));
String t = "";
boolean start = false;
while ((t = bis.readLine()) != null)
{
if(!start && t.indexOf("create")>-1 && t.indexOf("table")>-1)
{
start = true;
String tableName = t.substring(t.indexOf("table")+6,t.indexOf("(")).trim();
String tableBean = "";
char[] tt = tableName.toCharArray();
boolean tmpFlag = true;
for (int i = 4; i < tt.length; i++)
{
if(tmpFlag)
{
tableBean += String.valueOf(tt[i]).toUpperCase();
tmpFlag = false;
}
else
{
if(tt[i] == '_')
{
tmpFlag = true;
continue;
}
else
tableBean += String.valueOf(tt[i]);
}
}
tableBean += "Bean";
xml += "<table tableName=\""+tableName+"\"
domainObjectName=\""+tableBean+"\">\n\t<property
name=\"useActualColumnNames\" value=\"false\"/>\n";
// System.out.println(tableName.toUpperCase());
}
else
{
if(start)
{
if(t.indexOf("primary")>-1)
{
//xml += "\t<generatedKey
column=\""+t.substring(t.indexOf("primary
key")+11,t.indexOf(")")).trim().replaceAll("\\(", "")+"\"
sqlStatement=\"ORACLE\" identity=\"true\" />\n" ;
if(t.indexOf(");")>-1)
{
start = false;
xml +="</table>\n";
}
continue;
}
if(t.indexOf(");")>-1)
{
start = false;
xml +="</table>\n";
continue;
}
//处理特殊类型
t = t.replaceAll("long varchar", "longvarchar");
t = t.replaceAll("\t", "*");
String tmp = t.replaceAll(" ", "*");
String[] bb = tmp.split("\\*");
String field = "";
String dataType = "";
for (int i = 0; i < bb.length; i++)
{
if(field.equals("") && !bb[i].equals(""))
{
field = bb[i].trim();
// field = field.replaceAll(" ", "");
continue;
}
else if(dataType.equals("") && !bb[i].equals(""))
{
dataType = bb[i].trim().toUpperCase();
break;
}
}
if(dataType.indexOf("(")>-1)
dataType = dataType.substring(0,dataType.indexOf('('));
if(dataType.indexOf(',')>-1)
dataType = dataType.substring(0,dataType.indexOf(','));
if(dataType.equals("DATE"))
dataType = "Date";
xml += "\t<columnOverride column=\""+field.toLowerCase()+"\"
jdbcType=\""+ dataType + "\"
javaType=\""+toJavaType(dataType)+"\"/>\n";
}
}
}
System.out.println(xml);
}
catch (Exception e)
{
e.printStackTrace();
}
}
private static String toJavaType(String dataType)
{
dataType = dataType.toUpperCase();
if(dataType.equals("NUMBER"))
{
return "long";
}
else if(dataType.equals("INT"))
{
return "int";
}
else if(dataType.equals("VARCHAR2"))
{
return "String";
}
else if(dataType.equals("VARCHAR"))
{
return "String";
}
else if(dataType.equals("LONGVARCHAR"))
{
return "String";
}
else if(dataType.equals("TEXT"))
{
return "String";
}
else if(dataType.equals("BLOB"))
{
return "byte[]";
}
else if(dataType.equals("DATE"))
{
return "java.util.Date";
}
else if(dataType.equals("TIMESTAMP"))
{
return "java.sql.Timestamp";
}
else if(dataType.equals("CHAR"))
{
return "String";
} else
return "";
}
发表评论
-
oracle复制表数据,复制表结构
2011-07-25 21:19 361951.不同用户之间的表数据复制 对于在一个数据库上的两个 ... -
删除 SQL Server 的所有已知实例
2011-04-05 18:42 2029如果提示实例已经被注册,无法安装,那么: 删除 SQL ... -
【SQL】安装 SQL SERVER MsiGetProductInfo 无法检索 Product Code 1605错误 解决方案
2011-04-05 17:10 4845重装数据库服务器上的SQL SERVER 2008 上遇到了以 ... -
Mysql Using Master/Slave Replication with ReplicationConnection
2011-03-24 15:19 1983Starting with Connector/J 3.1.7 ... -
oracle网络配置listener.ora、sqlnet.ora、tnsnames.ora
2010-12-03 12:36 33334oracle网络配置 三个配置文件 listener.ora ... -
Oracle XE的数据库创建过程
2010-12-02 22:55 4341今天安装了Oracle XE,发现并没有自动创建数据库。趁着 ... -
实现数据库TPC性能测试的开源及商业软件
2010-12-02 01:11 3118商业软件 Benchmark Factory ... -
MySQL压力测试工具mysqlslap
2010-11-07 17:13 1768MySQL从5.1.4版开始带有一个压力测试工具mys ... -
一台机器上安装多个mysqld实例
2010-11-06 16:09 2165一台机器安装多个mysqld实例 1. ps -aux | ... -
MySQL数据库双向同步
2010-08-25 20:23 40741. 主从关系的同步 master端 192.168.5 ... -
MySQL 数据库之间的同步(windows与linux)
2010-08-25 20:14 32051.导出windows mysql的test库到linux m ... -
Ubuntu Server 下开启远程连接 MySQL
2010-03-16 23:24 3105要通过远程连接MySQL,需要做两步:第一步是要创建一个可以远 ... -
DB2 在REDHAT 5下的详细安装过程 DB2 9.5 C EXPRESS
2010-03-02 10:43 4584过详细测试并且补充后发表, 括号内的为自行添加的内容. ... -
IBM DB2 Express-C 9.5.2
2010-03-02 09:44 3509或许您已经知 ... -
Oracle Database 10g Express Edition安装小结
2010-03-01 15:28 9165racle Database 10g Express Edit ... -
HA JDBC – High Availability JDBC
2010-02-27 18:46 3302Some time ago I worked on a pr ... -
数据归档将走向何方
2010-02-25 11:50 2263数据量的爆炸性增长,让我们不得不更加关心存储。这也造成 ... -
Database
2010-02-18 15:53 2313下一代数据库发展的4大趋势 趋势之一:对XML的支 ... -
免安装Oracle运行pl/sql developer
2010-02-16 20:27 2181Sql客户端中,虽然最便捷的是万能而且轻量无比的Sql Wor ... -
在debian上安装oracle 10g express
2010-02-16 18:46 4919在debian上安装oracle 10g express 若 ...
相关推荐
4. **xslt**:这部分可能包含了一系列XSLT样式表文件,它们定义了如何将数据库元数据转换成具体的Java和XML代码。开发者可以修改这些样式表以适应特定的代码风格和项目规范。 使用IBATIS3代码生成器时,首先需要...
为了进一步提高开发效率,开发者们设计了一系列的代码生成工具,如"Ibatis Helper"和"generator"等,它们能够自动生成基于Ibatis或Mybatis的CRUD(Create, Read, Update, Delete)代码,从而减少手动编写SQL和实体类...
本话题主要探讨如何自动将MySQL数据库中的表结构转换为Java实体类以及生成相应的iBatis配置文件。 首先,我们需要理解Java实体类(Entity Class)的作用。在Java应用中,实体类通常代表数据库中的表,每个属性对应...
为了提高开发效率并减少错误,可以利用工具或脚本自动从数据库表结构生成对应的Java类属性以及相关的SQL映射文件。这种方法特别适用于使用MyBatis框架(前身是iBatis)的项目。 #### 二、SqlMap概述 **SqlMap**是...
IBatisNet数据映射器会自动把int.MinValue转换为NULL插入到数据库,而从数据库中获得NULL时,也会转化为C#的int.MinValue。这样,程序就要对int.MinVaue这个值进行特殊处理,例如不能把int.MinValue直接显示在...
- **自动生成的主键**:支持插入后自动生成主键值。 - **存储过程**:支持调用数据库存储过程。 - **Parameter Mapping**: - **parameterClass**:指定传入参数的类。 - **parameterMap**:定义复杂的参数映射...
"sequence.sql"可能是一个数据库脚本,通常用于创建序列,序列在关系型数据库中常用于生成唯一的ID,比如在主键字段上。在Oracle数据库中,序列是自增ID的一种常见实现方式,而在MySQL或PostgreSQL等数据库中,可能...
这三个框架各有特点,但都提供了ORM(对象关系映射)机制,帮助开发者将数据库操作转换为面向对象的代码。 **MyBatis** MyBatis 是一款轻量级的Java持久层框架,它放弃了Hibernate的全自动化,允许开发者拥有更多的...
iBatis 是一款优秀的持久层框架,其核心组件 SQL Maps (现在通常称为 MyBatis) 能够极大简化数据库操作代码,通过 XML 配置文件将 JavaBean 映射为 SQL 语句,使得开发者能够更加专注于业务逻辑的编写而无需关注复杂...
- **iBATIS SQL Map** 是一种用于简化数据库访问的工具,它通过简单的XML配置文件将Java Bean与SQL语句进行映射,从而减少了编写数据库访问代码的工作量。 #### 二、SQL Map 概念 - **SQL Map** 的核心概念是将Java...
2. **运行时**:当应用程序执行 SQL 语句时,iBATIS 会根据 XML 配置文件中的映射规则将 JavaBean 的属性转换为 SQL 语句中的参数,并将 SQL 语句的执行结果转换回 JavaBean 对象。 #### 二、安装与升级 **安装**...
3. **动态SQL**:iBATIS支持在SQL语句中使用条件判断,根据参数动态生成不同版本的SQL,提高了代码灵活性。 4. **事务管理**:iBATIS可以配合Spring进行声明式事务管理,简化事务控制。 在实际开发中,"基于JSP+...
1. Groovy-all-2.3.6.jar:这是一个Groovy语言的全集,Groovy是一种基于Java平台的动态语言,常用于构建脚本和自动化任务,与Java代码无缝集成。 2. CXF-dist-2.6.11.jar:Apache CXF是一个开源服务框架,用于创建...
通过XML映射文件,iBatis可以动态地执行SQL,将查询结果转换为Java对象,供JasperReport使用。 JasperReport3.1.4是报表设计和生成的核心组件。它支持丰富的报表元素,如文本框、图像、表格等,以及复杂的样式和...
在权限管理中,iBatis可以帮助我们将SQL语句与Java代码解耦,使得数据库操作更加灵活。我们可以根据用户的角色和权限,动态生成和执行SQL,实现数据的增删查改。同时,iBatis的映射文件可以清晰地定义数据库表和Java...
IBatisNet数据映射器会自动把int.MinValue转换为NULL插入到数据库,而从数据库中获得NULL时,也会转化为C#的int.MinValue。这样,程序就要对int.MinVaue这个值进行特殊处理,例如不能把int.MinValue直接显示在...