Mybatis框架篇章二

举报
兰舟千帆 发表于 2022/07/21 18:01:21 2022/07/21
【摘要】 使用Mapper代理简单记录一下Mybatis里面的这个Mapper代理的使用方式。框架的东西就是这样,把好多细节都隐藏了,看到更多的就是配置文件。基于二十一文的案例我们使用代理配置,有三点要求1:定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。基于上次的不使用代理的模块我在复制一份,然后使用代理。首先,我们就定义这个接口。这个接口的路径...

使用Mapper代理

简单记录一下Mybatis里面的这个Mapper代理的使用方式。框架的东西就是这样,把好多细节都隐藏了,看到更多的就是配置文件。

基于二十一文的案例我们使用代理配置,

有三点要求
1:定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下。
基于上次的不使用代理的模块我在复制一份,然后使用代理。首先,我们就定义这个接口。这个接口的路径正确放置就行,在main下的java下面就可以,至于在下面定义多级文件夹也没有关系2,怎样方便就怎样来。
image.png
之前我们是有一个UserMapper.xml的映射文件,现在我们定义一个同名的接口文件。
然后将接口和映射文件放在同一目录的话可以直接拖动,但是这样显得不太分明,我们将java路径下的java文件和resources下面的配置文件层次分明。

我们可以这样做。然后把UserMapper.xml拖到这个文件夹下面。
image.png

我的文件夹比较简单,不是很多级,如果你的是多级的话,在resources下面创建directory,多层级直接要用/分割。

需要注意到这个是相对类路径,也就是相对于main或者java这两个同名的文件的相对位置得到一致就可以认为放置好了。
image.png

2: 设置SQL映射文件的namespace属性为Mapper接口全限定名
全限定名就是类名全称,带包路径用点隔开
image.png

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();

    }
}

测试运行
image.png
还有一点就是如果我们使用这种代理的方式也就是Mapper接口的名称和sql映射文件的名称相同,在同一目录下,我们可以在核心配置文件中使用批量注册的方式,也就是包扫描。
image.png
自此,我们对这个Mybatis框架的第一遍尝试操作就到此。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。