mybatis 实现oracle主键自增的机制

本篇文章将研究mybatis 实现oracle主键自增的机制

首先我们看对于同一张student表,对于mysql,sql server,oracle中它们都是怎样创建主键的

在mysql中

[sql]  view plain  copy
  1. create table Student(  
  2.  Student_ID  int(6) NOT NULL PRIMARY KEY AUTO_INCREMENT,  
  3.  Student_Name varchar(10) NOT NULL,  
  4.  Student_Age int(2) NOT NULL  
  5. );  
  6.   
  7. insert into student(student_name,student_age) values('zhangsan',20);  

在sql server中

[sql]  view plain  copy
  1. create table Student(  
  2.  Student_ID  int primary key identity(1,1),  
  3.  Student_Name varchar2(10) NOT NULL,  
  4.  Student_Age number(2) NOT NULL  
  5. );  
  6. insert into student(student_name,student_age) values('zhangsan',20);  

在oracle中

[sql]  view plain  copy
  1. create table Student(  
  2.  Student_ID  number(6) NOT NULL PRIMARY KEY,  
  3.  Student_Name varchar2(10) NOT NULL,  
  4.  Student_Age number(2) NOT NULL  
  5. );  

而oracle如果想设置主键自增长,则需要创建序列

[sql]  view plain  copy
  1. CREATE SEQUENCE student_sequence   
  2. INCREMENT BY 1  
  3. NOMAXVALUE  
  4. NOCYCLE  
  5. CACHE 10;  
  6.   
  7. insert into Student values(student_sequence.nextval,'aa',20);  
如果使用了触发器的话,就更简单了

[sql]  view plain  copy
  1. create or replace trigger student_trigger  
  2.   before insert on student    
  3.   for each row  
  4. begin  
  5.   select student_sequence.nextval into :new.student_id from dual;  
  6. end student_trigger;  
  7. /  
此时插入的时候触发器会帮你插入id

[sql]  view plain  copy
  1. insert into student(student_name,student_age) values('wangwu',20);  

至此,mysql,sql server,oracle中怎样创建表中的自增长主键都已完成。看一看出oracle的主键自增较mysql和sql sever要复杂些,mysql,sqlserver配置好主键之后,插入时,字段和值一一对应即可,数据库就会完成你想做的,但是在oracle由于多了序列的概念,那么oracle怎样实现主键自增呢?且看下文

首先是mybatis框架的配置文件

jdbc.properties文件

[html]  view plain  copy
  1. username=go  
  2. password=go  
  3. url=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
  4. driver=oracle.jdbc.driver.OracleDriver  

mybatis-config.xml文件

[html]  view plain  copy
  1. <configuration>  
  2.     <properties resource="jdbc.properties"/>  
  3.     <typeAliases>  
  4.         <package name="com.bean"/>  
  5.     typeAliases>  
  6.     <environments default="development">  
  7.         <environment id="development">  
  8.             <transactionManager type="JDBC" />  
  9.             <dataSource type="POOLED">  
  10.                 <property name="driver" value="${driver}" />  
  11.                 <property name="url" value="${url}" />  
  12.                 <property name="username" value="${username}" />  
  13.                 <property name="password" value="${password}" />  
  14.             dataSource>  
  15.         environment>  
  16.     environments>  
  17.       
  18.     <mappers>  
  19.         <mapper resource="com/bean/Student.xml" />  
  20.     mappers>  
  21. configuration>  

对应的实体类Student无变化,参考hibernate操作oracle数据库 主键自增

http://blog.csdn.net/thepeakofmountain/article/details/17173715

对应的Student.xml文件

[html]  view plain  copy
  1. <mapper namespace="com.bean.Student">  
  2.     <insert id="add" parameterType="Student">  
  3.     

你可能感兴趣的:(DB,JavaWeb)