首页 > 其他分享 >1_使用Mapper代理方式实现查询

1_使用Mapper代理方式实现查询

时间:2023-03-12 15:22:08浏览次数:37  
标签:Mapper 代理 查询 public org EmpMapper import com msb

 项目结构:注意文件路径和文件位置!!!

 

准备接口和mapper映射文件

EmpMapper接口

package com.msb.mapper;
import com.msb.pojo.Emp;
import java.util.List;
/**
 * @Author: Ma HaiYang
 * @Description: MircoMessage:Mark_7001
 */
public interface EmpMapper {
    /**
     * 该方法用于查询全部的员工信息
     * @return 全部员工信息封装的Emp对象的List集合
     */
    List<Emp> findAll();
}

EmpMapper.xml映射文件


 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.msb.mapper.EmpMapper">
    <!--
    1 接口的名字和Mapper映射为文件名字必须保持一致(不包含拓展名)
    2 Mapper映射文件的namespace必须是接口的全路径名
    3 sql语句的id必须是对应方法的名
    4 DeptMapper映射文件应该和接口编译之后放在同一个目录下
    -->
    <!--List<Emp> findAll();-->
    <select id="findAll" resultType="emp" >
        select * from emp
    </select>
</mapper>

 

在sqlMapConfig.xml核心配置文件中使用包扫描形式加载所有的映射文件


 

<!--加载mapper映射文件-->
<mappers>
    <!--通过类的全路径去找mapper映射文件-->
    <mapper class="com.msb.mapper.EmpMapper"/>
</mappers>

 

测试代码

package com.msb.test;
import com.msb.mapper.EmpMapper;
import com.msb.pojo.Dept;
import com.msb.pojo.Emp;
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.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
 * @Author: Ma HaiYang
 * @Description: MircoMessage:Mark_7001
 */
public class Test1 {
    private SqlSession sqlSession;
    @Before
    public void init(){
        SqlSessionFactoryBuilder ssfb =new SqlSessionFactoryBuilder();
        InputStream resourceAsStream = null;
        try {
            resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory factory=ssfb.build(resourceAsStream) ;
        sqlSession=factory.openSession();
    }
    @Test
    public void testFindAll(){
        EmpMapper empMapper=sqlSession.getMapper(EmpMapper.class);
        List<Emp> emps = empMapper.findAll();
        emps.forEach(System.out::println);
    }
    @After
    public void release(){
        // 关闭SQLSession
        sqlSession.close();
    }
}

 

 

代理模式浅析

mybatis是如何通过代理模式实现查询的

这条语句的底层使用了动态代理模式,动态创建一个EmployeeMapper的一个代理对象并赋给接口引用。所以在MyBatis中不需要显式提供Mapper接口的实现类,这也是简单的地方。

 

标签:Mapper,代理,查询,public,org,EmpMapper,import,com,msb
From: https://www.cnblogs.com/2324hh/p/17208212.html

相关文章

  • java动态代理和CGLIB
    参考:https://www.jianshu.com/p/cbd4c1ad8a75上一篇我们利用jdk的动态代理实现了一个简单的注解处理器,可以自动给一个button添加指定的监听器.但是jdk的动态代理有一个......
  • 1_使用Mapper代理方式实现查询
     项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;/***@Author:......
  • 1_使用Mapper代理方式实现查询
     项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;/***@Author:......
  • 1_使用Mapper代理方式实现查询
    ​ 项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;......
  • 1_使用Mapper代理方式实现查询
    ​ 项目结构:注意文件路径和文件位置!!! 准备接口和mapper映射文件EmpMapper接口 packagecom.msb.mapper;importcom.msb.pojo.Emp;importjava.util.List;......
  • 1_sqlSession查询的三种方式
    ​ SqlSession对象本身的API中就有三个查询方法,分别能够实现如下查询方式1返回单个对象selectOne2返回对象List集合selectList3返回对象Map集合selectMap接下来......
  • Sqlserver中使用ISNULL、CAST、CASE完成对jsTree数据的查询
    场景在上面中使用的查询jsTree数据的语句为:SELECTid,ISNULL(CAST(pidASVARCHAR(50)),CAST('#'ASVARCHAR(50)))parent,icon,text,num,org_class......
  • SQL—将查询后的列重新命名
    用update函数不得行,会报错。将查询后的列重新命名用update可能没有考虑到普适性的问题,针对性太强。(maybe)题解用的是起别名关键字as(以下是牛客上的题解)selectdevice_id......
  • 菜品信息的分页查询
    需求分析:系统中的菜品数据很多时,如果在一个页面中全部展示出来会显得比较乱,不便于查看,所以一般的系统中都会以分页的方式来展示列表数据代码开发梳理:1、页面发......
  • jdbc 链接 oracle 查询
    Oracle默认端口号为:1521Stringurl="jdbc:oracle:thin:@localhost:1521:orcl";报错1:ClassNotFoundException:oracle.jdbc.driver.OracleDriver:缺少pom依赖:<depen......