• 【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-

  • 相关阅读:
    为什么使用内部类?怎样使用内部类? 2016年12月15号
    java内部类 2016年12月13号
    接口与抽象类的区别与联系 2016年12月13日
    多态的向上转型和向下转型 2016.12.8
    构造器的调用顺序 2016.12.8
    static final 和final的区别 2016.12.07
    根据进程号查询占用资源多的线程
    Intellij idea启动项目提示"ClassNotFoundException"
    IntelliJ IDEA setup JDK无效
    (转)面试合集
  • 原文地址:https://www.cnblogs.com/heyang78/p/15229609.html
Copyright © 2020-2023  润新知