mybatis官方文档:mybatis.org/mybatis-3/z…
maven引入坐标
<dependencies>
<!-- mybatis框架-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<!-- jdbc连接 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
</dependencies>在resource文件下编写配置 mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<configuration>
<environments default="development">
<!--可以配置多套环境-->
<environment id="development">
<!--事务管理-->
<transactionManager type="JDBC"/>
<!--数据源-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!--每一个mapper都要在核心配置中注册-->
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>编写工具类,生成sqlsession
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
//从 XML 中构建 SqlSessionFactory
static{
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。
// SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}编写mapper接口
public interface UserMapper {
public List<student> getStudent();
}
编写接口对应的mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace对应接口位置-->
<mapper namespace="mapper.UserMapper">
<!--id为接口中的方法名,resultType对应返回值类型(路径)-->
<select id="getStudent" resultType="domain.student">
select * from student
</select>
</mapper>进行测试
public class UserMapperTest {
@Test
public void test() {
SqlSession sqlSession = null;
try {
//从编写的工具类中得到sqlession
sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<student> student = mapper.getStudent();
student.forEach(System.out::println);
} catch (Exception e) {
} finally {
//关闭会话
sqlSession.close();
}
}
}
遇到的问题
1.资源过滤,找不到接口对应的xml文件,mapper.xml没有被编译到classes路径下,所以会找不到
报错详情: Cause: java.io.IOException: Could not find resource mapper/userMapper.xml
解决方法:在maven的pom文件中添加资源过滤
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>2、问题详情:1 字节的 UTF-8 序列的字节 1 无效
在mapper.xml文件中写了中文注释,去掉就好了