首先我们来看看我的修改前的Mapper.xml
文件
<mapper namespace="com.fs.mapper.UserMapper"> <select id="selectAllUser" resultType="com.fs.pojo.User"> select * from tb_user; </select> </mapper>
其次是我的Mapper接口的代码
public interface UserMapper { List<User> selectAll(); }
最后再来看看测试类的代码
@Test public void test() throws IOException { //1.加载mybatis的核心配置文件,获取SQLSessionFactory String resource = "mybatisConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2.获取SqlsSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3.1 mapper代理开发,获取UserMapper接口的代理对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> users = mapper.selectAll(); System.out.println(users); //4.释放资源 sqlSession.close(); }
因为是初学mybatis,对其并没有太多的研究,最后发现是我的Mapper.xml
文件中的Id与Mapper接口中的方法名没有对应,导致在实现接口时,并没有找到对应的sql,也就报错了,解决方案就是把Mapper.xml文件中的ID与接口中的方法名一致即可
修改后:
Mapper.xml文件
<mapper namespace="com.fs.mapper.UserMapper"> <select id="selectAllUser" resultType="com.fs.pojo.User"> select * from tb_user; </select> </mapper>
Mapper接口:
public interface UserMapper { List<User> selectAllUser(); }
测试类:
@Test public void test() throws IOException { //1.加载mybatis的核心配置文件,获取SQLSessionFactory String resource = "mybatisConfig.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2.获取SqlsSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3.1 mapper代理开发,获取UserMapper接口的代理对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> users = mapper.selectAll(); System.out.println(users); //4.释放资源 sqlSession.close(); }
运行即可