二 Mapper代理开发
该篇文章为第二节,该专栏记录了MyBatis学习全过程
专栏目录
文章目录
1 流程
定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
设置SQL映射文件的namespace属性为Mapper接口全限定名
在Mapper接口定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
编码
- 通过SqlSession的getMapper方法获取Mapper接口的代理对象
- 调用对应方法完成sql的执行
细节:如果Mapper接口名称和SQL映射文件名称相同,并在同一个目录下,则可以使用包扫描的方式简化SQL映射文件的加载
2 具体操作
- 定义接口 并且将Mapper接口和SQL映射文件放置在同一目录下 。==注意,==这里在资源文件夹里新建文件夹不要使用 . 而是使用 / ,虽然显示一样,但是编译后效果不一样
- 设置SQL映射文件的namespace属性为Mapper接口全限定名
- 在Mapper接口定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
package org.example.mapper;
import org.example.pojo.User;
import java.util.List;
public interface UserMapper {
/**
* 查询所有的用户信息
*
* @return 用户列表
*/
List<User> selectAll();
}
注意更改映射文件地址信息
- 编码
package org.example;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.example.mapper.UserMapper;
import org.example.pojo.User;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
//Mapper代理开发
public class MyBatisDemo2 {
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
// List<User> users = sqlSession.selectList("test.selectAll");
// 3.1 获取UserMapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> users = userMapper.selectAll();
System.out.println(users);
// 4. 释放资源
sqlSession.close();
}
}