MyBatis查询数据库操作自定义字段名称方式

 更新时间:2025年05月19日 10:10:12   作者:CnLg.NJ  
这篇文章主要介绍了MyBatis查询数据库操作自定义字段名称方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

在使用 MyBatis 的 Mapper 进行数据库操作时,是可以使用 SELECT 语句的 字段 AS xx 这种语法的。

下面为你详细介绍不同场景下的使用方式。

基于 XML 映射文件的 Mapper

当使用 XML 映射文件来定义 Mapper 时,可以在 SQL 语句里使用 字段 AS xx 语法。

示例代码

Mapper 接口

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

public interface UserMapper {
    List<Map<String, Object>> selectUsersWithAlias();
}

Mapper XML 文件(UserMapper.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.example.mapper.UserMapper">
    <select id="selectUsersWithAlias" resultType="java.util.Map">
        SELECT user_id AS id, user_name AS name
        FROM users
    </select>
</mapper>

代码调用示例

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.InputStream;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) throws Exception {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class);
            List<Map<String, Object>> users = userMapper.selectUsersWithAlias();
            for (Map<String, Object> user : users) {
                System.out.println("ID: " + user.get("id") + ", Name: " + user.get("name"));
            }
        }
    }
}

代码解释

  • UserMapper.xml 文件的 select 语句中,使用 user_id AS iduser_name AS name 对字段进行了重命名。
  • resultType="java.util.Map" 表示查询结果会以 Map 的形式返回,其中键为字段名(使用 AS 后的别名),值为字段值。

基于注解的 Mapper

若使用注解来定义 Mapper,同样可以在 SQL 注解里使用 字段 AS xx 语法。

示例代码

import org.apache.ibatis.annotations.Select;
import java.util.List;
import java.util.Map;

public interface UserMapper {
    @Select("SELECT user_id AS id, user_name AS name FROM users")
    List<Map<String, Object>> selectUsersWithAlias();
}

代码解释

  • @Select 注解的 SQL 语句中,使用 AS 关键字对字段进行了重命名。
  • 方法返回类型为 List<Map<String, Object>>,查询结果中的字段名会以 AS 后的别名存在于 Map 中。

映射到实体类

当把查询结果映射到实体类时,AS 后的别名要和实体类的属性名一致,这样 MyBatis 才能正确映射。

示例代码

实体类

public class User {
    private Integer id;
    private String name;

    // Getters and Setters
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Mapper 接口

import java.util.List;

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

Mapper XML 文件(UserMapper.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.example.mapper.UserMapper">
    <select id="selectUsersWithAlias" resultType="com.example.entity.User">
        SELECT user_id AS id, user_name AS name
        FROM users
    </select>
</mapper>

代码解释

  • select 语句中使用 AS 关键字将 user_id 重命名为 iduser_name 重命名为 name,与 User 实体类的属性名一致。
  • resultType="com.example.entity.User" 表示查询结果会映射到 User 实体类。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java重试机制使用RPC必须考虑幂等性原理解析

    java重试机制使用RPC必须考虑幂等性原理解析

    这篇文章主要为大家介绍了java重试机制使用RPC必须考虑幂等性原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • JAVA中StringBuffer与String的区别解析

    JAVA中StringBuffer与String的区别解析

    这篇文章主要介绍了JAVA中StringBuffer与String的区别解析,需要的朋友可以参考下
    2014-02-02
  • 在Spring boot的项目中使用Junit进行单体测试

    在Spring boot的项目中使用Junit进行单体测试

    今天小编就为大家分享一篇关于spring boot使用Junit进行测试,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 详解java中BigDecimal精度问题

    详解java中BigDecimal精度问题

    这篇文章主要介绍了java BigDecimal精度问题,对精确计算感兴趣的同学,可以参考下
    2021-05-05
  • SpringBoot条件注解核心作用与使用场景详解

    SpringBoot条件注解核心作用与使用场景详解

    Spring Boot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注解,结合代码示例说明其作用与使用场景,感兴趣的朋友一起看看吧
    2025-04-04
  • SpringMVC通过拦截器实现IP黑名单

    SpringMVC通过拦截器实现IP黑名单

    这篇文章主要为大家详细介绍了SpringMVC通过拦截器实现IP黑名单,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Java中比较运算符compareTo()、equals()与==的区别及应用总结

    Java中比较运算符compareTo()、equals()与==的区别及应用总结

    这篇文章主要给大家介绍了关于Java中比较运算符compareTo()、equals()与==的区别及应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • Java SPEL表达式注入漏洞原理解析

    Java SPEL表达式注入漏洞原理解析

    SpEL简称Spring表达式语言,在Spring 3中引入,SpEL能在运行时构建复杂表达式、存取对象图属性、对象方法调用等等,可以与基于XML和基于注解的Spring配置还有bean定义一起使用,本文给大家介绍Java SPEL表达式注入漏洞原理研究,感兴趣的朋友一起看看吧
    2023-10-10
  • Java实现单线程聊天室

    Java实现单线程聊天室

    这篇文章主要为大家详细介绍了Java实现单线程聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • SSM框架使用poi导入导出Excel的详细方法

    SSM框架使用poi导入导出Excel的详细方法

    这篇文章主要介绍了SSM框架使用poi导入导出Excel,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论