温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis怎样测试

发布时间:2026-10-13 21:31:38 来源:亿速云 阅读:97 作者:小樊 栏目:编程语言

在 Java 项目中使用 MyBatis 时,常见的测试方式有以下几种,从简单到规范逐步说明。


一、最基础的测试(main 方法 / 手动测试)

适合初学者或快速验证 SQL。

示例

public class MybatisTest {
    public static void main(String[] args) throws Exception {
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = factory.openSession();

        UserMapper mapper = session.getMapper(UserMapper.class);
        System.out.println(mapper.selectById(1));

        session.close();
    }
}

✅ 优点:简单
❌ 缺点:不适合真实项目


二、使用 JUnit 测试(推荐)

1️⃣ 引入依赖(Maven)

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

2️⃣ 编写测试类

public class UserMapperTest {

    private SqlSession session;
    private UserMapper userMapper;

    @Before
    public void init() throws Exception {
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        session = factory.openSession();
        userMapper = session.getMapper(UserMapper.class);
    }

    @Test
    public void testSelect() {
        User user = userMapper.selectById(1);
        assertNotNull(user);
    }

    @After
    public void close() {
        session.close();
    }
}

✅ 适合:小型项目、学习阶段


三、Spring + MyBatis 测试(最常用)

1️⃣ 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

2️⃣ 测试类

@SpringBootTest
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testSelect() {
        User user = userMapper.selectById(1);
        assertNotNull(user);
    }
}

✅ 优点:

  • 自动加载 Spring 配置
  • 自动注入 Mapper
  • 最贴近真实环境

四、事务回滚测试(防止脏数据)

@SpringBootTest
@Transactional
class UserMapperTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    void testInsert() {
        User user = new User();
        user.setName("test");
        userMapper.insert(user);
    }
}

✅ 测试结束后自动回滚


五、测试 SQL 是否正确(XML / 注解)

XML Mapper

<select id="selectById" resultType="User">
    select * from user where id = #{id}
</select>

测试重点

  • 参数是否能正确传入
  • 返回结果是否映射正确
  • 多表关联是否正常

六、常见问题

❓ 找不到 Mapper

  • @Mapper 或 @MapperScan
  • XML 路径是否正确

❓ SQL 不生效

  • XML namespace 是否正确
  • 方法名是否一致

七、推荐测试组合(真实项目)

✅ Spring Boot + MyBatis + JUnit + @Transactional


如果你愿意,可以告诉我:

  • 是否使用 Spring Boot
  • 使用 XML 还是注解
  • 想测 查询 / 插入 / 事务

我可以给你完整可运行示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手