import com.tyhxzy.entity.User; import com.tyhxzy.mapper.UserMApper; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import sun.security.util.Resources; import java.io.InputStream; import java.util.List; public class mybatis { @Test public void chaxun(){ InputStream inputStream = Resources.getResourceAsSteream("mybatis-config.xml"); SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder (); SqlSessionFactory sqlSessionFactory=builder.build ( inputStream ); SqlSession con=sqlSessionFactory.openSession (); UserMApper cc=con.getMapper ( UserMApper.class ); List<User> list=cc.findall (); for (User item:list){ System.out.println (item); } } }
时间: 2023-06-20 21:08:59 浏览: 39
这是一个使用 MyBatis 操作数据库的示例代码。其中导入了 User 实体类和 UserMapper 接口,通过读取 mybatis-config.xml 配置文件建立 SqlSessionFactory,然后获取一个 SqlSession 对象。通过 getMapper 方法获取 UserMapper 接口的实例,然后调用其中的 findall 方法查询所有用户数据,并将结果打印输出。需要注意的是,mybatis-config.xml 配置文件中需要配置数据源和对应的 Mapper 接口映射。
相关问题
import com.tyhxzy.entity.User; import com.tyhxzy.mapper.UserMApper; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.Test; import sun.security.util.Resources; import java.io.InputStream; import java.util.List; public class mybatis { @Test public void chaxun(){ InputStream inputStream = Resources.getResourceAsSteream("mybatis-config.xml"); SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder (); SqlSessionFactory sqlSessionFactory=builder.build ( inputStream ); SqlSession con=sqlSessionFactory.openSession (); UserMApper cc=con.getMapper ( UserMApper.class ); List<User> list=cc.findall (); for (User item:list){ System.out.println (item); } } }哪里错了
您的代码存在几个问题:
1. `Resources` 类在当前 Java 版本中已经被废弃,建议使用其他替代方案。
2. `SqlSessionFactoryBuilder` 类的 `build()` 方法需要传入一个 `Reader` 类型的参数,而您传入的是 `InputStream` 类型的参数,需要将其转换为 `Reader` 类型。
3. `mybatis-config.xml` 文件需要放置在类路径下,以便正确读取。
下面是修改后的代码示例:
```
import com.tyhxzy.entity.User;
import com.tyhxzy.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
public class MyBatisTest {
@Test
public void test() throws IOException {
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("mybatis-config.xml");
Reader reader = new java.io.InputStreamReader(inputStream, StandardCharsets.UTF_8);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
```
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lyf.music.mapper.UserMapper.selectList
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.lyf.music.mapper.UserMapper.selectList 是MyBatis框架中的一个错误信息,它表示在映射文件中找不到指定的SQL语句。
这个错误通常是由于以下几个原因引起的:
1. 映射文件中没有定义对应的SQL语句。
2. 映射文件中定义的SQL语句的id与代码中调用的id不一致。
3. 映射文件的路径配置错误。
解决这个问题的方法有以下几种:
1. 检查映射文件中是否定义了对应的SQL语句,并确保id与代码中调用的id一致。
2. 检查映射文件的路径配置是否正确,确保映射文件能够被正确加载。
3. 检查代码中调用的映射文件是否正确,确保调用的是正确的映射文件。
下面是一个示例,演示如何解决这个问题:
```java
// 在映射文件中定义对应的SQL语句
<select id="selectList" resultType="com.lyf.music.entity.User">
SELECT * FROM user
</select>
// 在代码中调用映射文件中的SQL语句
List<User> userList = sqlSession.selectList("com.lyf.music.mapper.UserMapper.selectList");
```