Mapper代理开发
目的是减少硬编码有更好的维护性
定义一个与SQL映射文件同名的Mapper接口
在resource目录下新建目录
用斜杠分隔
将SQL映射文件放到创建好的目录下
编译时Mapper接口会自动和SQL映射文件放置在同一目录下
注意: SQL映射文件移动目录之后在mybatis-config.xml配置文件中要把映射文件的resource的值改成com下的绝对路径
或者在mybatis-config.xml配置文件中将加载映射文件方式换成mapper代理方式
<!--Mapper代理方式-->
<package name="com.mybatis.mapper"/> //接口的目录位置
设置SQL映射文件的namespace属性为Mapper接口全限定名
在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
public interface UserMapper {
List<User> selectAll(); //查询一个对象就用User实体类 多个对象就用List集合泛型实体类
}
主程序入口测试代码编写
public class Main {
public static void main(String[] args) throws IOException {
//1. 获取SqlSessionFactory 注意此处的代码配置不需要记忆和理解,官方编写好直接复制使用即可
String resource = "mybatis-config.xml"; //写为mybatis-config.xml配置文件的的路径
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//2. 获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3. 获取Mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//4. 定义对象执行方法
List<User> users = userMapper.selectAll();
//4.打印输出查看
System.out.println(users);
//5. 释放资源
sqlSession.close();
}
}
运行查看
核心配置文件 mybatis-config.xml
可以配置多个数据库连接 通过default指定切换