当前位置:首页 > Java

java mybatis如何映射

2026-03-22 15:31:30Java

MyBatis 映射配置方法

MyBatis 的核心是通过 XML 或注解将 Java 对象与数据库表进行映射。以下是常见的映射方式:

XML 映射文件配置mapper.xml 文件中定义 SQL 与结果的映射关系:

<mapper namespace="com.example.mapper.UserMapper">
    <resultMap id="userResultMap" type="User">
        <id property="id" column="user_id"/>
        <result property="name" column="user_name"/>
        <result property="email" column="user_email"/>
    </resultMap>

    <select id="selectUser" resultMap="userResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

注解方式映射 直接在接口方法上使用注解:

public interface UserMapper {
    @Results({
        @Result(property = "id", column = "user_id"),
        @Result(property = "name", column = "user_name"),
        @Result(property = "email", column = "user_email")
    })
    @Select("SELECT * FROM users WHERE id = #{id}")
    User selectUser(int id);
}

高级映射技巧

一对一关联映射 使用 <association> 标签处理单对象关联:

<resultMap id="orderWithUserMap" type="Order">
    <id property="id" column="order_id"/>
    <association property="user" javaType="User">
        <id property="id" column="user_id"/>
        <result property="name" column="user_name"/>
    </association>
</resultMap>

一对多关联映射 使用 <collection> 标签处理集合关联:

<resultMap id="userWithOrdersMap" type="User">
    <id property="id" column="user_id"/>
    <collection property="orders" ofType="Order">
        <id property="id" column="order_id"/>
    </collection>
</resultMap>

动态 SQL 支持

MyBatis 提供多种动态 SQL 标签:

<select id="findUsers" resultType="User">
    SELECT * FROM users
    <where>
        <if test="name != null">
            AND name = #{name}
        </if>
        <choose>
            <when test="status == 1">
                AND active = 1
            </when>
            <otherwise>
                AND active = 0
            </otherwise>
        </choose>
    </where>
</select>

类型处理器配置

自定义类型处理需实现 TypeHandler 接口:

@MappedTypes({Date.class})
@MappedJdbcTypes(JdbcType.VARCHAR)
public class DateTypeHandler extends BaseTypeHandler<Date> {
    @Override
    public void setNonNullParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) {
        ps.setString(i, new SimpleDateFormat("yyyy-MM-dd").format(parameter));
    }
    // 其他方法实现...
}

配置文件中注册处理器:

java mybatis如何映射

<typeHandlers>
    <typeHandler handler="com.example.handler.DateTypeHandler"/>
</typeHandlers>

标签: javamybatis
分享给朋友:

相关文章

java如何react

java如何react

在Java中使用React 要在Java项目中集成React,通常需要将React前端与Java后端结合使用。以下是几种常见的方法: 使用Spring Boot作为后端 Spring Boot是一个…

java如何自学

java如何自学

确定学习目标和路径 自学Java需要明确目标,例如开发Web应用、Android应用或后端服务。根据目标选择学习重点,如Java基础、Spring框架或Android开发。制定阶段性计划,从基础语法到…

如何安装java环境

如何安装java环境

下载JDK安装包 访问Oracle官方网站或OpenJDK项目页面,选择适合操作系统的JDK版本(如Windows、macOS或Linux)。确保下载与系统架构匹配的版本(32位或64位)。 运行安…

如何搭建java环境

如何搭建java环境

下载JDK 访问Oracle官网或OpenJDK官网下载适合操作系统的JDK安装包。推荐选择长期支持版本(如JDK 17或JDK 21)。 安装JDK 运行下载的安装程序,按照向导完成安装。注意…

java如何实现异步

java如何实现异步

Java实现异步的方法 Java中实现异步编程可以通过多种方式,每种方式适用于不同的场景和需求。以下是常见的实现方法: 使用Thread类 创建新线程执行异步任务是最基础的方式。通过继承Thread…

java版本如何查看

java版本如何查看

查看Java版本的命令行方法 在命令行或终端中运行以下命令可以查看当前安装的Java版本: java -version 输出示例: java version "1.8.0_301" Java(TM…