在 Java 项目中使用 MyBatis 时,常见的测试方式有以下几种,从简单到规范逐步说明。
适合初学者或快速验证 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();
}
}
✅ 优点:简单
❌ 缺点:不适合真实项目
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
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();
}
}
✅ 适合:小型项目、学习阶段
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
@SpringBootTest
class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void testSelect() {
User user = userMapper.selectById(1);
assertNotNull(user);
}
}
✅ 优点:
@SpringBootTest
@Transactional
class UserMapperTest {
@Autowired
private UserMapper userMapper;
@Test
void testInsert() {
User user = new User();
user.setName("test");
userMapper.insert(user);
}
}
✅ 测试结束后自动回滚
<select id="selectById" resultType="User">
select * from user where id = #{id}
</select>
@Mapper 或 @MapperScan✅ Spring Boot + MyBatis + JUnit + @Transactional
如果你愿意,可以告诉我:
我可以给你完整可运行示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。