Mapper XML 文件

本文详细介绍了MyBatis映射文件的结构与使用方法,包括Mapper元素的作用及属性,SQL语句的映射方式如insert、update、delete和select等,并探讨了resultMap的复杂应用。
    • 文件内容结构
      • <?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="cn.test.mapper.UserMapper">
            <insert id="add" parameterType="User">
                insert into stu (name,clsid)
                	value (#{name},#{clsid})
            </insert>
            <update id="update" parameterType="User">
                update stu set name=#{name} ,clsid=#{clsid}
                	where id = #{id}
            </update>
            <delete id="delete" parameterType="int">
                delete from stu where id = #{id}
            </delete>
            <select id="select" parameterType="int" resultType="User">
               select * from stu where id = #{id}
            </select>
        </mapper>

    •  Mapper元素只有一个属性namespace,它有两个作用:
              一 是用于区分不同的mapper
              (在不同的mapper文件里,子元素的id可以相同,mybatis通过namespace和子元素的id联合区分),
              二是与接口关联
              (应用程序通过接口访问mybatis时,mybatis通过接口的完整名称查找对应的mapper配置,因此namespace的命名务必小心一定要某接口同名)


    resultMap – 最复杂,也是最有力量的元素,用来描述如何从数据库结果集中来加 载你的对象。
    sql – 可以重用的 SQL 块,也可以被其他语句引用。
    insert – 映射插入语句
    update – 映射更新语句
    delete – 映射删除语句
    select – 映射查询语句

    sql这个元素可以被用来定义可重用的 SQL 代码段,可以包含在其他语句中。比如

    <sql id="userColumns"> id,username,password </sql>
    Select
    <select id="selectUsers" resultType="map">
      select <include refid="userColumns"/>
      from some_table
      where id = #{id}
    </select>

    Parameters

    <insert id="insertUser" parameterType="User">
      insert into users (id, username, password)
      values (#{id}, #{username}, #{password})
    </insert>

    Result Maps

    <resultMap id="userResultMap" type="User">
      <id property="id" column="user_id" />
      <result property="username" column="username"/>
      <result property="password" column="password"/>
    </resultMap>
    <select id="selectUsers" resultMap="userResultMap">
      select user_id, user_name, hashed_password
      from some_table
      where id = #{id}
    </select>
    
    
    
    
    
    

ResultMap高级结果映射

<!-- 当数据库中的字段信息和对象的二属性不一致时需要通过resultMap来映射 -->
	    <resultMap type="Address" id="addressMap" atuoMapping="true">
	    	<id column="a_id" property="id"/>
	    	<result column="post_code" property="postcode"/>
	    	<!-- 使用关联 -->
	    	<association property="user" javaType="User">
	    		<id column="user_id" property="id" />
	    		<result column="username" property="username" />
	    		<result column="nickname" property="nickname" />
	    	</association>
	    </returnMap>
	    <select id="load" parameterType="int" resultMap="addressMap">
	    	select * ,t1.id as 'a_id' from t_address t1 right join t_user t2 on(t1.user_id=t2.id) where t1.id = 1;
	    </select>


    在 MyBatis 框架中,mapper XML 文件用于定义 SQL 语句以及与 Java 对象之间的映射关系。编写和配置 mapper XML 文件是实现数据库操作的关键步骤之一。以下是详细的编写和配置方法: ### Mapper XML 文件的基本结构 每个 mapper XML 文件通常对应一个接口(Mapper Interface),其命名通常遵循 `mybatis-mapper.xml` 的规范,并与对应的 Mapper 接口保持一致的命名习惯,例如 `UserMapper.xml`。 ```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"> <!-- SQL 查询示例 --> <select id="selectUserById" resultType="com.example.model.User"> SELECT * FROM users WHERE id = #{id} </select> <!-- 插入数据示例 --> <insert id="insertUser"> INSERT INTO users (name, email) VALUES (#{name}, #{email}) </insert> <!-- 更新数据示例 --> <update id="updateUser"> UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id} </update> <!-- 删除数据示例 --> <delete id="deleteUserById"> DELETE FROM users WHERE id = #{id} </delete> </mapper> ``` ### 配置文件中的引用方式 在 `mybatis-config.xml` 中,需要将 mapper XML 文件注册到 MyBatis 的配置中,以便框架能够识别并加载这些 SQL 映射文件。可以通过 `<mappers>` 标签指定具体的 mapper 文件路径。 ```xml <configuration> <mappers> <mapper resource="mapper/UserMapper.xml"/> <!-- 可以添加多个 mapper 文件 --> </mappers> </configuration> ``` 此外,也可以通过注解的方式直接在接口中定义 SQL 语句,但复杂的 SQL 功能建议使用 XML 来配置映射语句,以提高可维护性和灵活性 [^2]。 ### 使用 MyBatis Generator 自动生成 Mapper XML 文件 MyBatis 提供了 MyBatis Generator 工具,可以自动根据数据库表生成实体类、Mapper 接口和对应的 XML 文件。通过执行逆向工程代码,可以快速生成所需的 XML 文件结构,减少手动编写的工作量 [^3]。 以下是一个简单的逆向工程代码示例: ```java import java.io.File; import java.util.ArrayList; import java.util.List; import org.mybatis.generator.api.MyBatisGenerator; import org.mybatis.generator.config.Configuration; import org.mybatis.generator.config.xml.ConfigurationParser; import org.mybatis.generator.internal.DefaultShellCallback; public class Mbg { public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<>(); boolean overwrite = true; File configFile = new File("mybatis-generator.xml"); ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration(configFile); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); System.out.println("执行完毕"); } } ``` 该工具会根据 `mybatis-generator.xml` 的配置自动生成相应的 mapper XML 文件,简化开发流程。 ### 总结 编写和配置 MyBatis mapper XML 文件的核心在于理解其基本结构、正确设置命名空间以及在 `mybatis-config.xml` 中引入相关文件。对于复杂业务逻辑,推荐使用 XML 方式管理 SQL 语句,同时可以利用 MyBatis Generator 工具自动化生成基础文件,提升开发效率 [^2]。 ---
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值