You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring整合MyBatis开发CRUD应用时SQL Mapper配置解析错误排查求助

问题分析与修复方案

从错误栈和代码来看,你遇到的核心问题是类路径解析错误,同时还有Mapper调用不匹配、Spring整合MyBatis姿势不当的问题,下面一步步给你拆解:

1. 最直接的报错根源:包名前缀写错了

错误提示里明确显示Could not resolve type alias 'java.com.model.Siswa',这是因为你在Mapper XML里把实体类的包名写错了——咱们自己的业务类绝不会放在java.开头的包下,正确的包名应该是com.model.Siswa。

修改你的Student.xml里的parameterType:

<insert id="insert" parameterType="com.model.Siswa">

2. Mapper命名空间与代码调用不匹配

你的Mapper XML里设置的namespace="Siswa",但在Repository代码里调用SQL时写的是session.insert("Student.insert", siswa1);——这里的Student和Mapper的namespace完全不一致,MyBatis根本找不到对应的SQL语句。

把Repository里的调用改成:

session.insert("Siswa.insert", siswa1);
// 下面那条insert也同步改成Siswa.insert

3. Spring整合MyBatis的方式完全错了

你现在在Repository里每次调用saveSiswa都重新读取配置文件、创建SqlSessionFactory,这完全违背了Spring依赖注入的核心思想,不仅效率极低,还容易引发各种资源问题。正确的姿势是:

  • 在Spring配置类/XML中提前配置好SqlSessionFactory
  • 通过依赖注入把SqlSessionFactory或者SqlSessionTemplate给到Repository使用

修改后的Repository示例(遵循Spring规范):

@Repository
public class SiswaRepo {

    private final SqlSessionFactory sqlSessionFactory;

    // 构造方法注入SqlSessionFactory
    public SiswaRepo(SqlSessionFactory sqlSessionFactory) {
        this.sqlSessionFactory = sqlSessionFactory;
    }

    @Override
    public void saveSiswa(Siswa siswa) throws IIOException {
        // 用try-with-resources自动关闭会话
        try (SqlSession session = sqlSessionFactory.openSession(true)) { 
            // 直接用传入的完整siswa对象即可,不需要拆分
            session.insert("Siswa.insert", siswa);
            System.out.println("Records Saved Successfully ");
        } catch (Exception e) {
            e.printStackTrace();
            throw new IIOException("保存数据失败", e);
        }
    }
}

4. 业务逻辑的小bug

你在Repository里把一个完整的Siswa对象拆成了siswa1和siswa2分别插入,这会导致数据库里出现两条不完整的记录(第一条只有基本信息,第二条只有分数)。其实你的SQL已经包含了两个表的插入语句,直接用传入的完整siswa对象就能完成批量插入。

总结

先修复包名和Mapper调用的问题,这两个是导致当前报错的直接原因;然后调整Spring整合MyBatis的方式,遵循依赖注入规范;最后修正业务逻辑,避免插入无效数据。

内容的提问来源于stack exchange,提问作者JS24

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 20:44:06