目的
:优势
:步骤
:
namespace
属性设置为Mapper接口全限定名(如"com.java.mapper.UserMapper");id
,并保持方法返回值类型与SQL映射文件一致;SqlSession对象
的getMapper方法
获取Mapper接口代理对象,并调用对应方法
完成SQL的执行;资源包下创建一个目录,存放SQL映射文件
:
注意,创建时使用"\“,不能使用”." !!!
SQL映射文件位置改动后,需要在MyBatis核心配置文件中重新配置SQL映射文件位置哦!"com/java/mapper/UserMapper.xml
若Mapper接口名称与SQL配置文件名称一致且在同一目录下,可以简化MyBatis配置文件中配置映射文件的操作。
设置同名接口,目录名称保持一致
:
虽然现在接口与映射文件仅目录同名而位置不同,但在编译后会因为目录同名的关系被放置在同一位置;
将namespace属性设置为Mapper接口的全限定名
:
<?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命名空间,id,返回值类型-->
<mapper namespace="com.java.mapper.UserMapper">
<select id="selectAll" resultType="com.java.pojo.User">
select * from tb_user;
</select>
</mapper>
public interface UserMapper {
//方法名、返回值类型与映射文件id、resultType保持一致
public List<User> selectAll();
}
测试
:
public class mybatisDemo {
public static void main(String[] args) throws IOException {
//1. 加载mybatis配置文件,获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//
// //2. 获取SqlSession对象去执行SQL
// SqlSession sqlSession = sqlSessionFactory.openSession();
//
// //3. 执行SQL语句
// //传入Mapper映射文件中SQL语句的 "命名空间+id"
// List<User> users = sqlSession.selectList("test.selectAll");
//
// System.out.println(users);
//
// //释放资源
// sqlSession.close();
//2. Mapper代理方式,简洁、安全、避免硬编码
//try()中创建资源,无需手动释放
try(SqlSession sqlSession = sqlSessionFactory.openSession()){
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();
System.out.println(users);
}
}
}
输出结果
:
[User{id=1, username=‘张三’, password=‘123’, gender=‘男’, addr=‘北京’}, User{id=2, username=‘李四’, password=‘456’, gender=‘男’, addr=‘上海’}, User{id=3, username=‘王麻子’, password=‘789’, gender=‘女’, addr=‘广州’}]