这是一个MyBatis的映射文件,用于将Java对象映射到数据库表,实现持久化操作。具体解释如下:

  1. 第一行指定了XML文件版本和编码格式。

  2. 第二行定义了DTD文件的公共标识符和版本号。

  3. <mapper> 元素定义了命名空间,用于区分不同的映射文件。

  4. <resultMap> 元素定义了映射关系,将数据库表的列映射到Java对象的属性。

  5. <id> 元素定义了主键列的映射关系。

  6. <result> 元素定义了非主键列的映射关系。

  7. <sql> 元素定义了可重用的SQL片段,用于组合复杂的SQL语句。

<?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.huoli.demo.Mapper.XuserMapper' >
    <resultMap id='BaseResultMap' type='com.huoli.demo.entity.Xuser' >
        <id column='xuser_id' property='id' jdbcType='BIGINT' />
        <result column='xuser_name' property='name' jdbcType='VARCHAR' />
        <result column='xuser_age' property='age' jdbcType='BIGINT' />
    </resultMap>
     
    <sql id='Base_Column_List' >
        xuser_id, xuser_name, xuser_age
    </sql>
 
    <select id='getAll' resultMap='BaseResultMap'  >
       SELECT
       <include refid='Base_Column_List' />
       FROM xuser
    </select>
 
    <select id='getOne' parameterType='java.lang.Long' resultMap='BaseResultMap' >
        SELECT
       <include refid='Base_Column_List' />
       FROM xuser
       WHERE id = #{id}
    </select>
 
    <insert id='insert' >
       INSERT INTO
            xuser
            (xuser_id,xuser_name,xuser_age)
        VALUES
            (#{id}, #{name}, #{age})
    </insert>
     
    <delete id='delete' parameterType='java.lang.Long' >
       DELETE FROM
             xuser
       WHERE
             xuser_id =#{id}
    </delete>
 
</mapper>

解释:

  • 对象关系映射 (ORM):ORM 框架将 Java 对象与数据库表之间建立关联,实现数据的持久化。MyBatis 是一种半自动 ORM 框架,需要通过 XML 映射文件来定义映射关系。

  • 命名空间:命名空间用于区分不同的映射文件。一般使用包名和映射文件名组合,例如 com.huoli.demo.Mapper.XuserMapper

  • resultMap 元素:定义了数据库表列与 Java 对象属性之间的映射关系。

  • id 元素:定义了主键列的映射关系。

  • result 元素:定义了非主键列的映射关系。

关于纯 Java 代码实现:

MyBatis 也支持通过注解的方式来实现对象和数据库表之间的映射关系,不需要使用 XML 映射文件。这种方式更简洁,但不够灵活,无法实现一些复杂的映射关系。

public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findById(Long id);
 
    @Insert("INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})")
    void insert(User user);
 
    @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
    void update(User user);
 
    @Delete("DELETE FROM user WHERE id = #{id}")
    void delete(Long id);
}

在上面的示例中,使用 @Select@Insert@Update@Delete 等注解定义 SQL 语句,#{id}#{name}#{age} 等表示参数占位符。

MyBatis 映射文件示例:XuserMapper.xml

原文地址: https://www.cveoy.top/t/topic/lBiZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录