本文例程下载: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-