`
yangzb
  • 浏览: 3472712 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

将数据库脚本转换成ibatis代码自动生成脚本

阅读更多

将数据库脚本转换成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 "";
       
       
    }

分享到:
评论

相关推荐

    ibatis代码自动生成

    ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成,ibatis代码自动生成

    ibatis代码自动生成代码程序

    ibatis代码自动生成代码程序,有现成的例子,只要将配制文件中的数据库连接连接和数据库表名、实体类名、包名修改在你想要的就可以,1分钟内搞定,实体类。

    ibatis代码自动生成工具项目

    自动生成ibatis所需文件,达到快速查询,减少工作量的效果 CorpChannelDAO.java CorpChannelDAOimpl.java CorpChannel.java CorpChannelExample.java game_channel__corp_channel_SqlMap.xml 详情步骤请见...

    IBATIS3代码生成器

    IBATIS3代码生成器 ibatis,Ibator,Abator

    Java_SSM成型框架 + Mysql数据库sql文件 + ibatis 代码生成器 + 登录/注册弹窗页面

    Java_SSM成型框架 + Mysql数据库sql文件 + ibatis 代码生成器 + 登录/注册弹窗页面 , 数据已经打通,开箱即用, 里面有一个是maven开发下环境框架,一个是war包内含jar资源, 开发环境用的是Eclipse + mysql 5.7 + ...

    sqlserver Ibatis XML自动生成工具

    sqlserver Ibatis XML自动生成工具,本人正在使用的工具;下载后配置XML数据库连接和用户名密码,输入表名即可生成

    ibatis自动生成工具

    ibatis 自动生成工具 用于生成dao 实体类

    ibatis sqlserver代码自动生成

    网上关于ibatis代码自动生成的例子不少,但是让人还是感到一头雾水,本文附添加过程以及基础包。

    ibatis代码生成工具

    ibatis代码生成工具。iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。于2010年6月16号被谷歌托管,改名为MyBatis。是一个基于SQL映射支持Java和.NET的持久层...

    Ibatis代码生成器

    1)、数据库类型选择:目前支持Oracle和Mysql两种数据库语句的生成,默认是Oracle。 2)、要生成建表语句, a)、请在“数据库定义Excel文件路径”中选择对应的文件, b)、然后点击下面的按钮“根据数据库...

    Ibatis代码自动生成工具—Abator应用

    NULL 博文链接:https://bijian1013.iteye.com/blog/2093452

    ibatis代码生成器

    自动生成action- mapper层所有增删改查代码,使用方便简单

    IBatis 代码生成工具

    IBatis的配置文件 XML 生成工具。 简单易用,基于.NET平台。

    Abator自动生成ibatis代码

    Abator自动生成ibatis代码!

    iBATIS的代码生成器

    iBATIS的代码生成器 iBATIS的代码生成器 iBATIS的代码生成器

    ibatis自动生成代码工具

    本工具的主要功能是:根据您指定的数据库地址选择表或自定义属性信息(文件),生成对应的pojo类和ibatis配置文件; 3. 目前支持的较好的是mysql数据库,oracle的也支持,但还没经过测试,故暂不提供此功能选项...

    iBatis自动代码生成工具abator的演示教程

    iBatis自动代码生成工具abator的演示教程

    java代码自动生成器(根据数据库生成数据库操作代码)

    是一个以spring为核心的项目脚手架(或者称为胶水框架),框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成java的hibernat ...

    代码自动生成器

    根据数据库表结构SQL脚本文件 ,自动生成JAVA代码. 如 ,相应的: JAVA实体、SQL语句、HTML标签和能生成测试数据的工具类.还额外增加了纯Map类型的SQL操作 , 因为JSON转Map是非常容易且不容易丢失数据的. 我们都知道,...

    表自动生成ibatis工具

    设置表自动生成ibatis的sql语句等对应的配置文件

Global site tag (gtag.js) - Google Analytics