JavaWeb-MyBatis | Mapper代理开发及案例

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等,如果刚开始学习Java的小伙伴可以点击下方连接查看专栏
本专栏地址:JavaWeb
Java入门篇: Java基础学习篇
Java进阶学习篇(持续更新中):Java进阶学习篇

在这里插入图片描述

文章目录

  • 一、前言
  • 二、Mapper代理要求及配置
    • 1.概述
    • 2.新建目录
    • 3.移动文件
    • 4.修改mybatis-config.xml文件
    • 5.检验
    • 6.编写Mapper接口文件
  • 三、实例(查询表内数据)

一、前言

在前面使用MyBatis优化了JDBC代码以后,仍然存在着一些问题,比如下面这两行代码也存在着硬编码问题,这里调用 selectList() 方法传递的参数是映射配置文件中namespace.id值,这样写也不便于后期的维护,所以要使用Mapper代理来解决问题,并简化代码

//执行SQL
        List<User> user = sqlSession.selectList("test.selectALL");

        //打印结果
        System.out.println(user);

上一篇文章传送门:JavaWeb-MyBatis | MyBatis简介及入门案例详解

二、Mapper代理要求及配置

1.概述

使用Mapper代理方式,必须满足以下要求:定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下

2.新建目录

由于我们会把配置文件单独放在一个文件夹中,又想要把Mapper的配置文件(UserMapper.xml)和接口文件(UserMapper)放在一起,所以要保证其目录相同,由于是新建目录,所以要写成com/itheima/mapper才能创建,但在IDEA中显示的还是com.itheima.mapper便于查看是否在同一目录下
JavaWeb-MyBatis | Mapper代理开发及案例_第1张图片

3.移动文件

这里直接选中我们要移动的Mapper的配置文件(UserMapper.xml)移动到刚刚新建好的目录下即可,直接摁回车确认就可以了
JavaWeb-MyBatis | Mapper代理开发及案例_第2张图片

4.修改mybatis-config.xml文件

这里我们要把namespace改一下,设置SQL映射文件的namespace属性为Mapper接口全限定名,这里要注意不需要写根路径,只要写在这个项目中哪个包下的即可

<mapper namespace="com.itheima.mapper.UserMapper">

5.检验

在这里只需要compile一下项目,然后再去查看生成的Mapper的配置文件(UserMapper.xml)和接口文件(UserMapper)是否在一个目录下MyBatisDemo\target\classes\com\itheima\mapper注意是在target目录下的mapper文件夹中,具体效果如下图所示
JavaWeb-MyBatis | Mapper代理开发及案例_第3张图片

6.编写Mapper接口文件

  • 接口命名一般为表的名字+Mapper ,所以这里接口的名字命名为UserMapper

  • 接口文件一般存放在mapper包下,即域名下再新建一个包,因此在新建的时候可以选中Java包,右键新建Java类,并输入com.itheima.mapper.UserMapper

  • 语句的含义为:将SQL语句执行完毕后查询到的结果封装到一个集合中,集合的名字应该与我们新建的实体类(类中的成员属性与表中字段一致)

package com.itheima.mapper;

import com.itheima.pojo.User;

import java.util.List;

public interface UserMapper {
    List<User> selectALL();
}

三、实例(查询表内数据)

这里与前面不同的是执行SQL语句可以省略,取而代之的是获取UserMapper接口代理对象,如果不知道左边写什么,可以直接使用快捷键Ctrl+Alt+V快速生成左边,然后再自己修改变量名或者选择提示的变量名

package com.itheima;

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

public class MyBatisDemo2 {
    public static void main(String[] args) throws IOException {

        //加载MyBatis的核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


        //SqlSession获取对象
        SqlSession sqlSession = sqlSessionFactory.openSession();


        
        //获取UserMapper接口代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List<User> users = userMapper.selectALL();

        //打印结果
        System.out.println(users);

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

你可能感兴趣的:(JavaWeb,#,MyBatis,mybatis,java)