目录
- 项目结构与库表数据
- pom.xml
- application.yml
- 实体类
- Mapper
- controller
- 接口测试
基于spring-boot 2.7.11,连接Oracle 11g
仅做一个简单的示例
特别说明(不一定正确,还请指正):我Oracle也不熟,但据我观察发现,springboot项目配置Oracle驱动之后,就不需要Oracle的客户端instantclient,以及后面将该项目打成jar包部署的同时,linux环境中也不需要进行instantclient相关的配置。
项目结构与库表数据
-- 创建表: student_info 属主: scott (默认当前用户)
create table scott.student_info (sno number(10) constraint pk_si_sno primary key,sname varchar2(10),sex varchar2(2),create_date date
);
-- 添加注释
comment on table scott.student_info is '学生信息表';
comment on column scott.student_info.sno is '学号';
comment on column scott.student_info.sname is '姓名';
comment on column scott.student_info.sex is '性别';
comment on column scott.student_info.create_date is '创建日期';-- 插入
insert into scott.student_info (sno, sname, sex, create_date)
values (1, '张三', '男', sysdate);
insert into scott.student_info (sno, sname, sex, create_date)
values (2, '李四', '女', sysdate);
insert into scott.student_info (sno, sname, sex, create_date)
values (3, '王五', '男', sysdate);
commit;
select * from scott.student_info;
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.11</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com</groupId><artifactId>oraclDemo</artifactId><version>0.0.1-SNAPSHOT</version><name>oracl-demo</name><description>oracl-demo</description><properties><java.version>1.8</java.version></properties><dependencies><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.1.1</version></dependency><!--oracle 连接--><dependency><groupId>com.oracle.database.jdbc</groupId><artifactId>ojdbc6</artifactId><version>11.2.0.4</version></dependency><!-- 阿里数据库连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.14</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.25</version></dependency><!--hutool--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.15</version></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version><scope>provided</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build></project>
application.yml
server:port: 8081spring:datasource:driver-class-name: oracle.jdbc.OracleDriverusername: scottpassword: xxxxxxurl: jdbc:oracle:thin:@127.0.0.1:1521:orcltype: com.alibaba.druid.pool.DruidDataSourcedruid:#初始化大小initialSize: 5#最小值minIdle: 5#最大值maxActive: 20#最大等待时间,配置获取连接等待超时,时间单位都是毫秒msmaxWait: 60000#配置间隔多久才进行一次检测,检测需要关闭的空闲连接timeBetweenEvictionRunsMillis: 60000#配置一个连接在池中最小生存的时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,#'wall'用于防火墙,SpringBoot中没有log4j,我改成了log4j2filters: stat,wall,log4j2#最大PSCache连接maxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: true# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500# 配置StatFilterweb-stat-filter:#默认为false,设置为true启动enabled: trueurl-pattern: "/*"exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"#配置StatViewServletstat-view-servlet:url-pattern: "/druid/*"#允许那些ipallow: 127.0.0.1login-username: adminlogin-password: admin#是否可以重置reset-enable: true#启用enabled: true
实体类
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Data
public class Student {private int sno;private String sname;private String sex;private Date create_date;
}
Mapper
@Mapper
public interface StudentMapper {@Select("Select * from scott.student_info")List<Student> selectStudentList();@Select("Select * from scott.student_info where sname='张三' ")Student selectStudent();
}
controller
@Slf4j
@RestController
public class StudentController {@Resourcepublic StudentMapper studentMapper;@GetMapping("/getstuList")public List getstuList(){log.info("执行了 getstuList");return studentMapper.selectStudentList();}@GetMapping("/getstu")public Student getstu(){log.info("执行了 selectStudent");return studentMapper.selectStudent();}}
接口测试
成功从后台拿到数据。