mybatis简单resultMap使用详解

文章介绍了Mybatis作为半自动ORM框架的工作原理,展示了如何配置mybatis-config.xml,以及使用mybatisUtil加载工具类。在POJO实体类与数据库字段不匹配的情况下,通过resultMap解决属性和字段的映射问题,避免了SQL查询中冗余的字段别名设置。resultMap通过id、type、column和property属性实现高效映射。
摘要由CSDN通过智能技术生成

mybatis简单resultMap使用详解

Mybatis的介绍以及使用:

mybatis是一个半自动的ORM(Object Relational Mapping)框架,需要手动配置一些SQL语句或者注解,相对来说Mybatis留给程序员操作的空间灵活度更高,通常需要手动配置一些东西完成OR映射。当数据库表中的字段 和 POJO实体类不匹配时,这是就需要程序员手动完成字段的映射。

mybatis-config.xml配置文件

    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

    "">

mybatisUtil加载工具类

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;

public class mybatisUtil {

private static SqlSessionFactory sqlSessionFactory=null;

static {

    try {

        String resource="mybatis-config.xml";

        InputStream in=Resources.getResourceAsStream(resource);

      KNYXQCW  sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);

    } catch (IOException e) {

        e.printStackTrace();

    }

}

public static SqlSession getSqlsession(){

    return sqlSessionFactory.openSession();

}

}

POJO实体类User,为了方便简单实用Lombok注解,减少一些代码。

package com.pojo;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

@Data //各种get / set方法 Tostring…

@AllArgsConstructor //全参构造

@NoArgsConstructor //无参构造

public class User {

private int id;						//对应数据库中的id

private String username;			//对应数据库中的name

private String password;			//对应数据库中的pwd

}

接口方法与对应的xml配置文件

package com.dao;

import com.pojo.User;

import java.util.List;

public interface UserMapper {

List getUserList();

}

xml映射

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    "">





    select *from user;
  1. POJO实体类 和 数据表字段不匹配

@Test

public void test1(){

SqlSession session=mybatisUtil.getSqlsession();

UserMapper mapper=session.getMapper(UserMapper.class);

List list=mapper.getUserList();

for (User user : list) {

    System.out.println(user.toString());

}

session.close();

}

POJO实体类中有两个字段和数据库的字段不匹配,最后获得结果的时对于匹配失败的属性会产生null空值。使用输出日志进行帮忙很容易看到区别。

简单的解决方案:就是SQL语句查询时给查询字段使用重命名。

select id, name as username, pwd as password from user

  1. resultMap解决属性 - 字段不匹配问题

上面这种解决方案是能够解决问题的,但是有点冗余本身就要查全部的信息用的 * 做通配。这么一改需要每个字段都列出来,然后对极个别的字段进行取别名。试想一下当数据表中有几十个字段呢?而真正需要取别名的字段只有1 - 2个呢?因此mybatis提供了一个强大的机制resultMap结果集映射来解决这个问题。

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    "">



















    select *from user

resultMap标签的解释:

id可以认为定义方法的名称,下面select中的resultMap传入id的值就相当于使用这个方法完成映射。

type是实体类名

column对应数据库中的字段

property是实体类的属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis中,resultMap用于自定义查询结果的映射规则。通过resultMap,我们可以将查询结果的列与对象的属性进行映射,实现灵活的结果处理。 resultMap的定义可以在<select>元素中使用,也可以在外部进行定义并在<select>元素中引用。通过resultMap,我们可以将查询结果的列名与对象的属性名进行映射,甚至可以将不一致的列名映射为对象的属性。这样,我们可以灵活地处理查询结果,满足不同的需求场景。 使用resultMap进行自定义结果映射时,我们可以指定要显示的列,也可以定义映射规则来处理复杂的查询结果。这种方式非常灵活,广泛应用于实际开发中。 总结来说,resultMapMyBatis中是用来定义查询结果的映射规则的。它可以实现结果与对象属性的灵活映射,可以处理复杂的查询结果,并且应用广泛。在使用resultMap时,需要注意resultType和resultMap属性不能同时存在,只能选择其中一种使用。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MyBatisresultMap详解](https://blog.csdn.net/weixin_49707895/article/details/109564527)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值