老司机学习MyBatis之如何获取Oracle主键的值

一、前言

前面一节,我们介绍了MySQL下MyBatis是如何获取自增主键和非自增主键的,这节我们将来探讨一下Oracle是如何获取主键的,由于Oracle是不支持自动生成主键的,不像Mysql能自动生成。所以我们讨论的就是后者。

二、案例

♦在Oracle下创建数据库表t_user

CREATE TABLE t_user (
  id varchar(50) NOT NULL,
  loginId varchar(20) DEFAULT NULL,
  userName varchar(100) DEFAULT NULL,
  role varchar(255) DEFAULT NULL,
  note varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
);

♦在Oracle下创建创建序列

create sequence SEQ_T_USER_ID
       minvalue 1
       maxvalue 9999999999999999999999999999
       start with 1
       increment by 1
       cache 20;

♦mybatis-config.xml文件中增加Oracle数据源配置


	
	
		
		
		
		
	

♦db.properties配置文件,增加Oracle配置信息

oracle.driver=oracle.jdbc.driver.OracleDriver
oracle.url=jdbc:oracle:thin:@localhost:1521:orcl
oracle.username=SCOTT
oracle.password=SCOTT

♦UserMapper.xml文件




        
	
		
			select SEQ_T_USER_ID.nextval from dual 
		
		insert into
		t_user(id,loginId,userName,role,note)
		values(#{id},#{loginId},#{userName},#{role},#{note})
	
♦测试方法testAdd
@Test
public void testAdd() throws IOException {
	SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
	SqlSession openSession = sqlSessionFactory.openSession();
		
	try{
		UserMapper mapper = openSession.getMapper(UserMapper.class);
		User user = new User("kawendixu","卡文迪许","剑士","脑残人士。。。");
		mapper.addUser(user);
		System.out.println("***************"+user.getId()+"***************");
		openSession.commit();
	}finally{
		openSession.close();
	}

}

♦控制台打印结果如下:

2017-07-31 22:30:14,614 [main] [com.queen.mybatis.mapper.UserMapper.addUser!selectKey]-[DEBUG] ==>  Preparing: select SEQ_T_USER_ID.nextval from dual 
2017-07-31 22:30:14,946 [main] [com.queen.mybatis.mapper.UserMapper.addUser!selectKey]-[DEBUG] ==> Parameters: 
2017-07-31 22:30:15,018 [main] [com.queen.mybatis.mapper.UserMapper.addUser!selectKey]-[DEBUG] <==      Total: 1
2017-07-31 22:30:15,024 [main] [com.queen.mybatis.mapper.UserMapper.addUser]-[DEBUG] ==>  Preparing: insert into t_user(id,loginId,userName,role,note) values(?,?,?,?,?) 
2017-07-31 22:30:15,025 [main] [com.queen.mybatis.mapper.UserMapper.addUser]-[DEBUG] ==> Parameters: 1(Integer), kawendixu(String), 卡文迪许(String), 剑士(String), 脑残人士。。。(String)
2017-07-31 22:30:15,080 [main] [com.queen.mybatis.mapper.UserMapper.addUser]-[DEBUG] <==    Updates: 1
***************1***************
MyBatis通过这种方式也能够拿到Oracle的序列值。

♦最后我们来看看数据库结果

SQL> select * from t_user;
 
ID      LOGINID      USERNAME       ROLE         NOTE
-------------------------------------------------------------
1      kawendixu     卡文迪许       剑士      脑残人士。。。
 

完整的工程目录结构如下

老司机学习MyBatis之如何获取Oracle主键的值_第1张图片

至此,我们关于MyBatis基础篇之如何获取Oracle主键的值介绍完毕,本文主要针对的Oracle数据库如何获取非自增ID的案例。


你可能感兴趣的:(MyBatis教程,老司机学习MyBatis)