在mysql中,主键往往是自增长的,这样使用起来是比较方便的,如果使用的是Oracle数据库,那么就不能使用自增长了,就得使用Sequence 序列生成id值了。
创建表以及序列
-- 创建表,表名以及字段名都要大写
CREATE TABLE "TB_USER" (
"ID" NUMBER ( 20 ) VISIBLE NOT NULL,
"USER_NAME" VARCHAR2 ( 255 BYTE ) VISIBLE,
"PASSWORD" VARCHAR2 ( 255 BYTE ) VISIBLE,
"NAME" VARCHAR2 ( 255 BYTE ) VISIBLE,
"AGE" NUMBER ( 10 ) VISIBLE,
"EMAIL" VARCHAR2 ( 255 BYTE ) VISIBLE
)
-- 创建序列
CREATE SEQUENCE SEQ_USER START WITH 1 INCREMENT BY 1
jdbc驱动包
由于版权原因,不能直接通过maven的中央仓库下载oracle数据库的jdbc驱动包,所以我们需要将驱动包安装到本地仓库。
jar包下载地址:https://download.csdn.net/download/weixin_45730091/12614824
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc8.jar
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=C:/Users/js/Desktop/ojdbc8.jar -DgeneratePom=true
安装完成后的坐标
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
<version>12.1.0.1</version>
</dependency>
application.properties
#oracle连接信息:
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
spring.datasource.username=system
spring.datasource.password=123456
#id生成策略
mybatis-plus.global-config.db-config.id-type=input
配置序列
使用Oracle的序列需要做2件事情
- 第一,需要配置Mybatis-Plus的序列生成器到Spring容器
@Configuration
@MapperScan("cn.com.javakf.mapper") // 设置mapper接口的扫描包
public class MybatisPlusConfig {
@Bean // 配置分页插件
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
@Bean // Oracle的序列生成器
public OracleKeyGenerator oracleKeyGenerator() {
return new OracleKeyGenerator();
}
}
- 第二,在实体对象中指定序列的名称
@KeySequence(value = "SEQ_USER", clazz = Long.class)
public class User extends Model<User> {
......
}
测试
@Test
public void testInsert() {
User user = new User();
user.setName("刘备");
user.setAge(30);
user.setPassword("123456");
user.setUserName("liubei");
user.setMail("liubei@163.com");
// 调用AR的insert方法进行插入数据
boolean result = user.insert();
System.out.println("result => " + result);
}
部署Oracle环境
为了简化环境部署,这里使用Docker环境进行部署安装Oracle。
#拉取镜像
docker pull truevoly/oracle-12c
#创建容器
docker create --name oracle -p 1521:1521 truevoly/oracle-12c
#启动
docker start oracle && docker logs -f oracle
#下面是启动过程
oracle
Database not initialized. Initializing database.
Starting tnslsnr
Copying database files
1% complete
3% complete
11% complete
18% complete
26% complete
37% complete
Creating and starting Oracle instance
40% complete
45% complete
50% complete
55% complete
56% complete
60% complete
62% complete
Completing Database Creation
66% complete
70% complete
73% complete
85% complete
96% complete
100% complete
Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/xe/xe.log" for further details.
Configuring Apex console
Database initialized. Please visit http://#containeer:8080/em http://#containeer:8080/apex for extra configuration if needed
Starting web management console
PL/SQL procedure successfully completed.
Starting import from '/docker-entrypoint-initdb.d':
Import finished
Database ready to use. Enjoy! ;)
ls: cannot access /docker-entrypoint-initdb.d/*: No such file or directory
#通过用户名密码即可登录
用户名和密码为: system/oracle