Mybatis框架篇章二
使用Mapper代理
简单记录一下Mybatis里面的这个Mapper代理的使用方式。框架的东西就是这样,把好多细节都隐藏了,看到更多的就是配置文件。
基于二十一文的案例我们使用代理配置,
有三点要求
1:定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。
基于上次的不使用代理的模块我在复制一份,然后使用代理。首先,我们就定义这个接口。这个接口的路径正确放置就行,在main下的java下面就可以,至于在下面定义多级文件夹也没有关系2,怎样方便就怎样来。
之前我们是有一个UserMapper.xml的映射文件,现在我们定义一个同名的接口文件。
然后将接口和映射文件放在同一目录的话可以直接拖动,但是这样显得不太分明,我们将java路径下的java文件和resources下面的配置文件层次分明。
我们可以这样做。然后把UserMapper.xml拖到这个文件夹下面。
我的文件夹比较简单,不是很多级,如果你的是多级的话,在resources下面创建directory,多层级直接要用/分割。
需要注意到这个是相对类路径,也就是相对于main或者java这两个同名的文件的相对位置得到一致就可以认为放置好了。
,
2: 设置SQL映射文件的namespace属性为Mapper接口全限定名
全限定名就是类名全称,带包路径用点隔开
3: 在 Mapper 接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致 。
好我们接下来在接口中编写,很简单。我们要返回的是是一个集合List,然后类型是User,所以我们这样写。
package mapper;
import jgdabc.User;
import java.util.List;
public interface UserMapper {
List<User> selectAll();
}
然后测试类
package jgdabc_;
import jgdabc.User;
import mapper.UserMapper;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class MybatisDemo {
public static void main(String[] args) throws IOException {
// 加载mybatis的核心配置文件
//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();
// 使用·代理
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.selectAll();
System.out.println(users);
//3. 执行sql
// List<User> users = sqlSession.selectList("test.selectAll");
// System.out.println(users);
// //4. 释放资源
sqlSession.close();
}
}
测试运行
还有一点就是如果我们使用这种代理的方式也就是Mapper接口的名称和sql映射文件的名称相同,在同一目录下,我们可以在核心配置文件中使用批量注册的方式,也就是包扫描。
自此,我们对这个Mybatis框架的第一遍尝试操作就到此。
- 点赞
- 收藏
- 关注作者
评论(0)