利用MyBatis生成Oracle数据库的逆向工程以及遇到的问题

1.什么是逆向工程

mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xmlpo..

企业实际开发中,常用的逆向工程方式:
由于数据库的表生成java代码。

2.创建逆向工程

        1 导入包:mybatis-generator-core-1.3.2

                         mysql-connector-java-5.1.7-bin.jarMySQL数据库用到的包)

                         ojdbc6.jar(Oracle数据库的包)

                            后面两个二选一,根据使用数据库来

        2 新建项目

        

        3 需要根据情况修改的地方

                    generatorConfig.xml,代码如下,需要改的地方标红

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE generatorConfiguration

  PUBLIC "-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"

  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

 

<generatorConfiguration>

   <context id="testTables" targetRuntime="MyBatis3">

      <commentGenerator>

         <!-- 是否去除自动生成的注释 true:是 false: -->

         <property name="suppressAllComments" value="true" />

      </commentGenerator>

      <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->

       <!--<jdbcConnectiondriverClass="com.mysql.jdbc.Driver"

         connectionURL="jdbc:mysql://localhost:3306/house"userId="root"

         password="123456">

      </jdbcConnection>-->

    

      <jdbcConnectiondriverClass="oracle.jdbc.OracleDriver"

         connectionURL="jdbc:oracle:thin:@localhost:1521:orcl"

         userId="root"

         password="123456">

      </jdbcConnection>

  

      <!-- 默认false,把JDBC DECIMAL NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL

         NUMERIC类型解析为java.math.BigDecimal -->

      <javaTypeResolver>

         <property name="forceBigDecimals" value="false" />

      </javaTypeResolver>

 

      <!-- targetProject:生成PO类的位置 -->

      <javaModelGenerator targetPackage="pojo"

         targetProject=".\src">

         <!-- enableSubPackages:是否让schema作为包的后缀 -->

         <property name="enableSubPackages" value="false" />

         <!-- 从数据库返回的值被清理前后的空格 -->

         <property name="trimStrings" value="true" />

      </javaModelGenerator>

        <!-- targetProject:mapper映射文件生成的位置 -->

      <sqlMapGenerator targetPackage="mapper"

         targetProject=".\src">

         <!-- enableSubPackages:是否让schema作为包的后缀 -->

         <property name="enableSubPackages" value="false" />

      </sqlMapGenerator>

      <!-- targetPackagemapper接口生成的位置 -->

      <javaClientGenerator type="XMLMAPPER"

         targetPackage="mapper"

         targetProject=".\src">

         <!-- enableSubPackages:是否让schema作为包的后缀 -->

         <property name="enableSubPackages" value="false" />

      </javaClientGenerator>

      <!-- 指定数据库表 -->

      <tableschema="" tableName="AREACATEGORY"></table>

      <tableschema="" tableName="AREASCOPE"></table>

      <tableschema="" tableName="COMMENTS"></table>

      <tableschema="" tableName="MANAGER"></table>

      <tableschema="" tableName="ORDERDETAIL"></table>

      <tableschema="" tableName="ORDERS"></table>

      <tableschema="" tableName="PRODUCT"></table>

      <tableschema="" tableName="RECEIVEIFO"></table>

      <tableschema="" tableName="ROLECATEGORY"></table>

      <tableschema="" tableName="SHOPPINGCAR"></table>

      <tableschema="" tableName="STYLE"></table>

      <tableschema="" tableName="users"></table>

      <!-- 有些表的字段需要指定java类型

       <table schema=""tableName="">

         <columnOverridecolumn="" javaType="" />

      </table>-->

   </context>

</generatorConfiguration>

              Test.java

package cn.test;

import java.io.File;

import java.io.IOException;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

 

importorg.mybatis.generator.api.MyBatisGenerator;

importorg.mybatis.generator.config.Configuration;

importorg.mybatis.generator.config.xml.ConfigurationParser;

importorg.mybatis.generator.exception.InvalidConfigurationException;

importorg.mybatis.generator.exception.XMLParserException;

importorg.mybatis.generator.internal.DefaultShellCallback;

 

publicclass Test {

 

  /**

   * @param args

   */

  publicstaticvoid main(String[] args) {

     // TODO Auto-generated method stub

     try {

        List<String> warnings =newArrayList<String>();

        boolean overwrite = true;

        //指定逆向工程配置文件

        File configFile = new File("generatorConfig.xml");

        ConfigurationParser cp = newConfigurationParser(warnings);

        Configuration config =cp.parseConfiguration(configFile);

        DefaultShellCallback callback= newDefaultShellCallback(overwrite);

        MyBatisGeneratormyBatisGenerator = new MyBatisGenerator(config,

              callback, warnings);

        myBatisGenerator.generate(null);       

     } catch (IOException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

     } catch (XMLParserException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

     } catch (InvalidConfigurationException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

     } catch (SQLException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

     } catch (InterruptedException e) {

        // TODO Auto-generated catch block

        e.printStackTrace();

     }

  }

}

                   4.执行代码,生成文件(并没有错误,只是我因为要把文件复制到别的项目使用,就没有导入MyBatis的包)

            

3.遇到的问题

       我是用oracle数据库的,遇到的第一个问题就是

1.   数据表创建成功,但是对数据表操作时,显示表不存在,原因是表名有小写,操作时要加双引号,比如select * from “opp”;

2.   逆向不成功,配置信息填写的也正确,执行没有报错,就是不出来,后来发现配置时这一名<tableschema="" tableName="SHOPPINGCAR"></table>

其中的schema最好不要填写,我之前在里面加了数据表所属的tablespace

 




    

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值