【SpringBoot/MyBatis/Oracle】如何在SpringBoot工程中配置编撰一个访问Oracle数据库的MyBatis

本文例程下载:https://files.cnblogs.com/files/heyang78/myBank_mybatis_oracle_junit_210905_1453.rar

本文涉及到的Oracle版本:11.2.0.1.0,SpringBoot版本:2.5.4,MyBatis选择SpringBoot提供的2.2.0,不保证下例在其它版本中运转正常。

下面是正文:

第一步:在pom.xml中添加对MyBatis/Oracle的依赖:

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>com.oracle.database.nls</groupId>
            <artifactId>orai18n</artifactId>
        </dependency>

        <dependency>
            <groupId>com.oracle.database.jdbc</groupId>
            <artifactId>ojdbc8</artifactId>
            <scope>runtime</scope>
        </dependency>

以上第一个为mybatis的,下面两个为Oracle的。

 

第二步:撰写与数据库student表对应的实体类:

student表包括id和name两个字段,那么要访问这个表必须撰写一个实体类不可,代码也很简单。

package com.hy.mybank.Entity;

/**
 * 和Test表对应的实体类
 * @author ufo
 *
 */
public class Student {
    private int id;
    private String name;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

这个类不需要无参构造函数。

 

第三步:撰写访问数据表的核心Mapper。

package com.hy.mybank.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import com.hy.mybank.Entity.Student;

@Mapper
public interface StudentMapper {
    @Select("select * from student where id=#{id}")
    Student findById(@Param("id") int id);
    
    @Select("select * from student")
    List<Student> findAll();
}

需要注意的是,这个类是接口,如果把它写成了class会出现This method requires a body instead of a semicolon(这个方法需要一个方法体而不是一个分号)的错误,如果遇到了就把class改成interface就行了。 

 

第四步:测试

有了Mapper,我们在测试类里注入它,然后测试它就行了。

package com.hy.mybank;

import static org.junit.jupiter.api.Assertions.assertEquals;

import java.util.List;

import javax.annotation.Resource;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import com.hy.mybank.Entity.Student;
import com.hy.mybank.mapper.StudentMapper;

@SpringBootTest
class MyBankApplicationTests {
    @Resource
    private StudentMapper stuMapper=null;
    
    @Test
    void contextLoads() {
    }

    @Test
    void test01_findById() {
        Student stu=stuMapper.findById(1);
        assertEquals("Andy", stu.getName());
    }
    
    @Test
    void test02_findAll() {
        List<Student> ls=stuMapper.findAll();
        assertEquals(2, ls.size());
    }
}

如果测试通过,就证明程序到Oracle的MyBatis通道打通了。

前作:https://www.cnblogs.com/heyang78/p/12793648.html

-END-

posted @ 2021-09-05 15:47  逆火狂飙  阅读(209)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东