Oracle数据库入门,SpringBoot集成Oracle

Oracle数据库入门,SpringBoot集成Oracle

官网下载地址

一. 主键递增设置

基于navicat进行创建

  1. 其他->序列->新建序列在这里插入图片描述

  2. 设置 递增1,最小1,保存,命名

  3. 创建表,设置主键,非null,以及其他字段

  4. 新建查询,输入以下命令创建触发器,主要修改四个参数

    CREATE TRIGGER AUTO_GROW_TRIGGER_BAK(定义触发器名) BEFORE
    insert ON T_USER(表名) FOR EACH ROW
    begin
    select ID_AUTO_GROW_SEQUENCE(序列名).nextval into:New.ID(主键名) from dual;
    end;
    

二. 项目搭建

1. 导入依赖
	<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> 
	</parent>
	
	<dependencies>
		<!--web包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
		
        <!--oracle连接-->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.1.0</version>
        </dependency>

        <!--mybatis plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.15</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
    
2. 配置yml
server:
  port: 2011
spring:
  datasource:
    url: jdbc:oracle:thin:@localhost:1521:XE
    username: QIU
    password: 123456
    driver-class-name: oracle.jdbc.driver.OracleDriver
mybatis-plus:
  mapper-locations: classespath:com/qiuming/hello/mapper/*.xml
3. 启动类
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

/**
 * 启动类
 **/
@SpringBootApplication
@MapperScan("com.qiuming.hello.mapper")
public class HelloApplication {

    public static void main(String[] args) {
        ConfigurableApplicationContext context = SpringApplication.run(HelloApplication.class);
    }
}

4. 创建实体类
import lombok.Data;

/**
 * 员工实体类
 * @author qiuming
 * @date 2021/03/18 17:29
 **/
@Data
public class Employee {
    private Long id;
    private String name;
    private Integer age;
    private Boolean sex;
    private String address;
}
5. 控制层提供接口
import com.qiuming.hello.domain.Employee;
import com.qiuming.hello.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
public class HelloController {

    @Autowired
    private HelloService helloService;

    @GetMapping("/listAll")
    public List<Employee> listAllEmps() {
        List<Employee> employees = helloService.listAllEmps();
        return employees;
    }

    @PostMapping("/saveEmp")
    public boolean saveEmp(@RequestBody Employee employee) {
        try {
            helloService.saveEmp(employee);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    @GetMapping("/deleteEmp/{id}")
    public boolean deleteEmpByEmpId(@PathVariable("id")Long id){
        try {
            helloService.deleteEmpByEmpId(id);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    @GetMapping("/getByEmpId/{id}")
    public Employee getByEmpId(@PathVariable("id") Long id){
        return helloService.getByEmpId(id);
    }
}
6. 服务层处理业务
import com.qiuming.hello.domain.Employee;

import java.util.List;

public interface HelloService {
    List<Employee> listAllEmps();

    void saveEmp(Employee employee);

    void deleteEmpByEmpId(Long id);

    Employee getByEmpId(Long id);
}
import com.qiuming.hello.domain.Employee;
import com.qiuming.hello.mapper.HelloMapper;
import com.qiuming.hello.service.HelloService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 服务层
 **/
@Service
public class HelloServiceImpl implements HelloService {

    @Autowired
    private HelloMapper helloMapper;

    @Override
    public List<Employee> listAllEmps() {
        return helloMapper.listAllEmps();
    }

    @Override
    public void saveEmp(Employee employee) {
        if (employee.getId() == null) {
            helloMapper.saveEmp(employee);
        }else {
            updateEmp(employee);
        }

    }

    @Override
    public void deleteEmpByEmpId(Long id) {
        helloMapper.deleteEmpByEmpId(id);
    }

    @Override
    public Employee getByEmpId(Long id) {
        return helloMapper.getByEmpId(id);
    }

    /**
     * 修改方法
     * @param employee
     */
    private void updateEmp(Employee employee) {
        helloMapper.updateEmp(employee);
    }
}
7. 数据层交互数据
import com.qiuming.hello.domain.Employee;

import java.util.List;

/**
 * 数据层,负责数据的读写
 */
public interface HelloMapper {
    List<Employee> listAllEmps();

    void saveEmp(Employee employee);

    void updateEmp(Employee employee);

    void deleteEmpByEmpId(Long id);

    Employee getByEmpId(Long id);
}

<resultMap id="baseResultMap" type="com.qiuming.hello.domain.Employee">
    <id column="EMPLOYEE_ID" property="id"/>
    <result column="EMPLOYEE_NAME" property="name"/>
    <result column="EMPLOYEE_AGE" property="age"/>
    <result column="EMPLOYEE_SEX" property="sex"/>
    <result column="EMPLOYEE_ADDRESS" property="address"/>
</resultMap>

<insert id="saveEmp" parameterType="com.qiuming.hello.domain.Employee">
    insert into "T_EMPLOYEE" ("EMPLOYEE_NAME", "EMPLOYEE_AGE", "EMPLOYEE_SEX", "EMPLOYEE_ADDRESS")
    VALUES (#{name},
            #{age},
            #{sex},
            #{address})
</insert>

<update id="updateEmp" parameterType="com.qiuming.hello.domain.Employee">
    update T_EMPLOYEE
    set EMPLOYEE_NAME    = #{name},
        EMPLOYEE_AGE     = #{age},
        EMPLOYEE_SEX     = #{sex},
        EMPLOYEE_ADDRESS = #{address}
    where EMPLOYEE_ID = #{id}
</update>

<delete id="deleteEmpByEmpId">
    delete
    from T_EMPLOYEE
    where EMPLOYEE_ID = #{id}
</delete>
<select id="listAllEmps" resultMap="baseResultMap">
    select EMPLOYEE_ID,
           EMPLOYEE_NAME,
           EMPLOYEE_AGE,
           EMPLOYEE_SEX,
           EMPLOYEE_ADDRESS
    from T_EMPLOYEE
</select>

<select id="getByEmpId" resultMap="baseResultMap">
    select EMPLOYEE_ID,
           EMPLOYEE_NAME,
           EMPLOYEE_AGE,
           EMPLOYEE_SEX,
           EMPLOYEE_ADDRESS
    from T_EMPLOYEE
    where EMPLOYEE_ID = #{id}
</select>

三. 测试

使用postman测试,可以新建文本,重命名为hello oracle.postman_collection.json,拷贝进去导入即可

{
	"info": {
		"_postman_id": "a68ddc58-eb2e-4eeb-bdf9-7dd4da620684",
		"name": "hello oracle",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "查询所有",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://localhost:2011/listAll",
					"protocol": "http",
					"host": [
						"localhost"
					],
					"port": "2011",
					"path": [
						"listAll"
					]
				}
			},
			"response": []
		},
		{
			"name": "添加数据",
			"request": {
				"method": "POST",
				"header": [],
				"body": {
					"mode": "raw",
					"raw": "{\r\n    \"name\":\"秋名\",\r\n    \"age\":21,\r\n    \"sex\":1,\r\n    \"address\":\"非洲\"\r\n}",
					"options": {
						"raw": {
							"language": "json"
						}
					}
				},
				"url": {
					"raw": "http://localhost:2011/saveEmp",
					"protocol": "http",
					"host": [
						"localhost"
					],
					"port": "2011",
					"path": [
						"saveEmp"
					]
				}
			},
			"response": []
		},
		{
			"name": "查询一条",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://localhost:2011/getByEmpId/1",
					"protocol": "http",
					"host": [
						"localhost"
					],
					"port": "2011",
					"path": [
						"getByEmpId",
						"1"
					]
				}
			},
			"response": []
		},
		{
			"name": "删除数据",
			"request": {
				"method": "GET",
				"header": [],
				"url": {
					"raw": "http://localhost:2011/deleteEmp/1",
					"protocol": "http",
					"host": [
						"localhost"
					],
					"port": "2011",
					"path": [
						"deleteEmp",
						"1"
					]
				}
			},
			"response": []
		}
	]
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答你关于Oracle数据库入门的问题!以下是一个简要的Oracle数据库入门教程: 1. 下载和安装Oracle数据库:首先,你需要从Oracle官方网站下载并安装Oracle数据库。选择适合你操作系统的版本,并按照安装向导进行安装。确保按照要求设置好数据库的用户名和密码。 2. 连接到数据库:安装完成后,你可以使用SQL*Plus或SQL Developer等工具连接到数据库。输入用户名和密码,然后选择连接到数据库实例。 3. 创建表空间:表空间是用来存储数据库对象(如表、索引等)的逻辑结构。使用CREATE TABLESPACE语句创建一个新的表空间,并为其指定数据文件的存储路径。 4. 创建表:使用CREATE TABLE语句创建表。指定表的列名、数据类型和约束条件。例如,CREATE TABLE语句可以像这样创建一个名为"employees"的表: CREATE TABLE employees ( employee_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50), hire_date DATE ); 5. 插入数据:使用INSERT INTO语句将数据插入到表中。例如,可以使用以下语句向"employees"表中插入一条记录: INSERT INTO employees (employee_id, first_name, last_name, hire_date) VALUES (1, 'John', 'Doe', '2022-01-01'); 6. 查询数据:使用SELECT语句从表中检索数据。例如,可以使用以下语句查询"employees"表中的所有记录: SELECT * FROM employees; 7. 更新数据:使用UPDATE语句更新表中的数据。例如,可以使用以下语句将"employees"表中employee_id为1的记录的first_name字段更新为'Mike': UPDATE employees SET first_name = 'Mike' WHERE employee_id = 1; 8. 删除数据:使用DELETE语句删除表中的数据。例如,可以使用以下语句删除"employees"表中employee_id为1的记录: DELETE FROM employees WHERE employee_id = 1; 这只是一个简要的入门教程,Oracle数据库有很多更复杂和高级的功能和概念。如果你想深入学习Oracle数据库,建议参考Oracle官方文档或相关的书籍和在线教程。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值