Mapper代理开发

目的

  • 解决原生方式中的硬编码
  • 简化后期执行SQL

    Mapper代理方式入门案例

  • 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下

  • 设置SQL映射文件的namespace属性为Mapper接口全限定名
  • 在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致
  • 编码

    1.完成Mapper文件映射

    :::info 定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下 :::

    创建包

    image.png

    创建并放入模拟接口

    image.png

    创建目录

    让Mapper接口与xml文件在同一目录下
  1. 我们可以直接用鼠标拖动,但是显然不合适,文件比较乱,不方便管理
  2. 我们在resources里新建目录,并映射 :::info 注意格式(要与mapper文件路径一致) ::: image.png

    编译

    :::info 把Tb_userMapper.xml文件移动到该目录下,并进行编译,这里我们使用maven插件进行编译 ::: image.png
    image.png

    映射文件成功

    image.png

    2.设置映射文件的namespace属性

    :::info 设置SQL映射文件的namespace属性为Mapper接口全限定名 ::: image.png

    3.在Mapper接口中定义方法

    :::info 在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致 ::: image.png

    更改mybatis-config.xml

    :::info 右键 - copy-path ::: image.png
    image.png

    4.模拟代理开发

    :::info 复制demo02 ::: image.png

    demo02源码

    ```java package com.taotao;

import com.taotao.mapper.UserMapper; import com.taotao.pojo.Tb_user; 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;

/**

  • Create By 刘鸿涛
  • 2022/3/12 20:27
  • Mybatis 代理开发 */ public class MyBatisDemo02 { public static void main(String[] args) throws IOException {
    1. //1.加载mybatis的核心配置文件,获取 SqlSessionFactory
    2. String resource = "mybatis-config.xml"; //相对路径
    3. InputStream inputStream = Resources.getResourceAsStream(resource);
    4. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //2.获取SqlSession对象,用它来执行sql
    SqlSession sqlSession = sqlSessionFactory.openSession();

    //3.执行sql

// List users = sqlSession.selectList(“test.selectAll”); //3.1 获取userMapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List tb_users = userMapper.selectAll(); System.out.println(tb_users);

    //4.释放资源
    sqlSession.close();
}

}

```

异常

image.png :::info 我换了root密码,所以重新改下root’@’localhost密码即可 ::: image.png

再次编译运行

image.png

complete!!

image.png