12、mybatis返回map单条及多条记录

本文详细介绍了如何在MyBatis中通过Map来获取单条和多条记录的方法,包括EmployeeMapper接口的设计、XML配置以及测试步骤。对于单条记录,展示了从Mapper到XML的配置过程;对于多条记录,同样给出了相应的Mapper接口和XML配置,并通过Test进行验证,得出测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、mybatis返回map单条记录

1)、EmployeeMapper接口

package com.mi.dao;

import com.mi.pojo.Employee;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface EmployeeMapper {
    //返回Map,key就是列名,value就是对应的值
    public Map<String,Object> getEmployeeMapById(Integer id);
}

2)、EmployeeMapper.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.mi.dao.EmployeeMapper">

    <!--返回Map-->
    <select id="getEmployeeMapById" resultType="map">
        select * from employee where id = #{id}
    </select>

</mapper>

3)、Test


    @Test
    public void testGetMapById() throws IOException {
        //1、获取SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2、获取Sqlsesion对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        try {
            //3、获取接口的实现类对象
            //会为接口自动创建一个代理对象,代理对象去执行增删改查方法
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);

            Map map = mapper.getEmployeeMapById(3);
            System.out.println(map);
        }finally {
            sqlSession.close();
        }
    }

4)、测试结果

{gender=0, last_name=jerry, id=3}

2、mybatis返回map多条记录

5)、EmployeeMapper

package com.mi.dao;

import com.mi.pojo.Employee;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface EmployeeMapper {

    //返回多条记录封装成一个map,key是这条记录的主键,value是记录封装后的javabean
    //告诉mybatis封装这个map的时候使用哪个属性作为主键
    @MapKey("id")
    public Map<Integer,Employee> getEmployeeMapByName(String lastName);
}

6)、EmployeeMapper.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.mi.dao.EmployeeMapper">
    <!--返回多条Map记录-->
    <select id="getEmployeeMapByName" resultType="com.mi.pojo.Employee">
        select * from employee where last_name like #{lastName}
    </select>

</mapper>

7)、Test

 @Test
    public void getEmployeeMapByName() throws IOException {
        //1、获取SqlSessionFactory对象
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //2、获取Sqlsesion对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        try {
            //3、获取接口的实现类对象
            //会为接口自动创建一个代理对象,代理对象去执行增删改查方法
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);

            Map map = mapper.getEmployeeMapByName("%e%");
            System.out.println(map);
        }finally {
            sqlSession.close();
        }
    }

8)、测试结果

{3=Employee{id=3, lastName='jerry', gender='0'}, 4=Employee{id=4, lastName='kite', gender='1'}}

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值