温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis怎么映射实体类

发布时间:2026-09-02 18:27:16 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

Java + MyBatis 中,映射实体类(Entity / POJO)主要有 几种常见方式,下面从最常用到进阶给你讲清楚。


一、最基础:resultType 自动映射(推荐)

1️⃣ 实体类

public class User {
    private Integer id;
    private String username;
    private String password;
    // getter / setter
}

2️⃣ Mapper XML

<select id="getUserById" resultType="com.example.entity.User">
    SELECT id, username, password
    FROM user
    WHERE id = #{id}
</select>

要求

  • 数据库字段名 = 实体类属性名(或符合驼峰规则)

二、字段名不一致:resultMap 显式映射(最常用)

数据库字段

user_id
user_name

实体类

public class User {
    private Integer userId;
    private String userName;
}

Mapper XML

<resultMap id="UserMap" type="com.example.entity.User">
    <id column="user_id" property="userId"/>
    <result column="user_name" property="userName"/>
</resultMap>

<select id="getUserById" resultMap="UserMap">
    SELECT user_id, user_name
    FROM user
    WHERE user_id = #{id}
</select>

适合

  • 字段名和属性名不一致
  • 复杂结果映射

三、驼峰自动映射(非常推荐)

开启驼峰

# application.yml
mybatis:
  configuration:
    map-underscore-to-camel-case: true

<settings>
  <setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>

数据库

user_id  ->  userId
create_time -> createTime

不需要写 resultMap


四、注解方式(无 XML)

@Select("SELECT id, username FROM user WHERE id = #{id}")
@Results({
    @Result(column = "user_id", property = "userId")
})
User getUserById(Integer id);

✅ 适合 简单项目 / 快速开发


五、MyBatis-Plus(最省事)

@TableName("user")
public class User {
    @TableId
    private Integer id;
    private String username;
}
User user = userMapper.selectById(1);

几乎零配置


六、常见坑总结

问题 解决方式
查出来属性为 null 字段名不一致 / 没开驼峰
主键没映射 <id>
List 映射失败 resultType 写实体类
一对一 / 一对多 <association> / <collection>

七、你适合哪种?

  • ✅ 新手 / 快速开发:驼峰 + resultType
  • ✅ 老项目 / 复杂 SQL:resultMap
  • ✅ 企业项目:MyBatis-Plus

如果你愿意,可以告诉我:

  • 用的是 XML 还是 注解
  • 是否 MyBatis-Plus
  • 具体报错或字段不一致情况

我可以帮你直接写完整示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI