java mybatis如何映射
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));
}
// 其他方法实现...
}
配置文件中注册处理器:

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






