1.首先在lib目录下放上oracle驱动包,这里我用的是ojdbc6.jar
2.generatorConfig.xml配置如下
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动-->
<classPathEntry location="ojdbc6.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate"value="true"/>
<!-- 是否去除自动生成的注释 true:是: false:否 -->
<property name="suppressAllComments"value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver"connectionURL="jdbc:oracle:thin:@120.26.122.3:1521:ORCL"userId="slian" password="123456">
<!--<property name="remarksReporting"value="true"></property> -->
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals"value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.slian.zrheis.model"targetProject="src/">
<property name="enableSubPackages"value="true"/>
<property name="trimStrings"value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="com.slian.zrheis.dao"targetProject="src/">
<property name="enableSubPackages"value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER"targetPackage="com.slian.zrheis.dao"targetProject="src/">
<property name="enableSubPackages"value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名 -->
<table schema="SLIAN" tableName="%"enableCountByExample="true" enableUpdateByExample="true"enableDeleteByExample="true" enableSelectByExample="true"selectByExampleQueryId="true"></table>
</context>
</generatorConfiguration>
运行命令
java -jar mybatis-generator-core-1.3.2.jar-configfile generatorConfig.xml -overwrite
3. 将生成的文件放到以下包中
4. 由于mybatis-generator生成的路径会自带模式名称(这里的模式是slian),因此需要去掉
例如,需要把ProducerMapper.xml中的dao.slian替换程dao,把model.slian替换成model
5. oracle数据库在mybatis生成主键
1. 序列方式
首先要在oracle数据库中建立一个序列,下面就创建了一个名称为SEQ_EMPLOYEE_ID的序列.该序列用于生成员工序号。
CREATE SEQUENCE "SLIAN"."SEQ_EMPLOYEE_ID" MINVALUE 1
MAXVALUE 999999
INCREMENT BY 1
START WITH 900
NOCACHE
NOORDER
NOCYCLE
然后在文件中加入红框内的代码
插入代码如下
<selectKeyresultType="java.lang.Integer" order="BEFORE"keyProperty="employeeId">
SELECT SEQ_EMPLOYEE_ID.nextval ASemployeeId FROM dual
</selectKey>
这样当插入记录时,会自动生成序列号存入数据库,并会返回主键保存在SysEmployee的employeeId中。
2. UUID方式
利用UUID生成主键,与上述方式类似,但不需要创建序列
例如,在xxx.xml的插入语句中添加红框内的代码
插入代码如下
<selectKeyresultType="java.lang.String" keyProperty="meetingId"order="BEFORE">select sys_guid() from dual</selectKey>
6. 关于oracle在mybatis的分页语句
例如要对员工信息表进行分页显示,首先在SysEmployeeMapper.xml中加入以下sql片段
然后在selectByExample中加入红框内的代码。
分页sql代码如下
<sqlid="OracleDialectPrefix" >
<if test="page != null">
select * from ( select row_.*, rownumrownum_ from (
</if>
</sql>
<sql id="OracleDialectSuffix" >
<if test="page != null">
) row_ ) where rownum_ > #{page.begin} and rownum_ <= #{page.end}
</if>
</sql>
<includerefid="OracleDialectPrefix" />
<include refid="OracleDialectSuffix" />
另外在page中还需要设置下end属性