在使用Mybatis时,有两种加载方式
package com.mybatis.ui;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.mybatis.entity.User;
import com.mybatis.mapper.UserMapper;
import com.mybatis.util.MyBatisUtil;
public class Test {
public static void main(String[] args) {
// 创建SQLSession对象
SqlSession session = MyBatisUtil.openSqlSession();
//第一种方式,调用的是SqlSession中的select、insert、update、delete等方法
//参数:映射器接口的权限定名+方法名(映射文件中namespace的值+某一条SQL语句映射的id属性值)
List<User> users = session.selectList("com.mybatis.mapper.UserMapper.findAllUser");
System.out.println(users);
//第二种方式(推荐的方式)
//参数是映射器接口的类型,返回值是该接口的实现类的对象
// UserMapper userMapper = session.getMapper(UserMapper.class);
// List<User> users = userMapper.findAllUser();
// System.out.println(users);
session.close();
}
}
但是在使用后,发现第一种可以加载成功,但是第二种就会爆出如下异常
你不妨去检查一下你的映射器接口配置文件
一定要保证你的SQL语句的id值要和接口定义的方法名一致
这样才可以正确的使用第二种方式
因为第一种方式是你自己拼接的参数,不会报错
而第二种方式,就会依据你接口的方法来实例化,这就要保证id和方法名必须一致