mybatis整合oracle

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_  &gt; #{page.begin}  and rownum_ &lt;= #{page.end}

 </if> 

 </sql> 

 

 <includerefid="OracleDialectPrefix" />

<include refid="OracleDialectSuffix" />

 

 

另外在page中还需要设置下end属性


版权声明:本文为kai_wei原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。