• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 新闻中心
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • mybatis中xml配置文件的使用指南
  • 来源:www.jcwlyf.com浏览:11更新:2025-11-12
  • MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在 MyBatis 中,XML 配置文件扮演着至关重要的角色,它可以用来配置数据源、映射实体类与数据库表、编写 SQL 语句等。下面将详细介绍 MyBatis 中 XML 配置文件的使用。

    一、MyBatis 核心配置文件

    MyBatis 的核心配置文件通常命名为 mybatis-config.xml,它是 MyBatis 应用程序的入口配置文件,用于配置 MyBatis 的全局设置、数据源、映射器等信息。以下是一个简单的核心配置文件示例:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                    <property name="username" value="root"/>
                    <property name="password" value="password"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/example/mapper/UserMapper.xml"/>
        </mappers>
    </configuration>

    在上述代码中,<environments> 标签用于配置多个数据库环境,每个 <environment> 标签代表一个具体的数据库环境。<transactionManager> 标签用于配置事务管理器, <dataSource> 标签用于配置数据源。<mappers> 标签用于指定映射器,这里通过 <mapper> 标签的 resource 属性指定了一个 XML 映射文件的路径。

    二、XML 映射文件

    XML 映射文件用于定义 SQL 语句和实体类之间的映射关系。通常一个 XML 映射文件对应一个 Mapper 接口。以下是一个简单的 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">
        <select id="selectUserById" resultType="com.example.entity.User">
            SELECT * FROM users WHERE id = #{id}
        </select>
        <insert id="insertUser" parameterType="com.example.entity.User">
            INSERT INTO users (name, age) VALUES (#{name}, #{age})
        </insert>
        <update id="updateUser" parameterType="com.example.entity.User">
            UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
        </update>
        <delete id="deleteUserById" parameterType="int">
            DELETE FROM users WHERE id = #{id}
        </delete>
    </mapper>

    在这个示例中,<mapper> 标签的 namespace 属性指定了对应的 Mapper 接口的全限定名。<select>、<insert>、<update> 和 <delete> 标签分别用于定义查询、添加、更新和删除操作。id 属性是该 SQL 语句的唯一标识符,resultType 属性用于指定查询结果的类型,parameterType 属性用于指定输入参数的类型。

    三、SQL 语句中的参数处理

    在 MyBatis 的 XML 映射文件中,SQL 语句可以通过 #{ } 或 ${ } 来引用参数。

    1. #{ }:它是预编译处理,MyBatis 会将 #{ } 替换为 ? 占位符,然后使用 PreparedStatement 来执行 SQL 语句,这样可以防止 SQL 注入攻击。例如:

    <select id="selectUserByName" resultType="com.example.entity.User">
        SELECT * FROM users WHERE name = #{name}
    </select>

    2. ${ }:它是字符串替换,MyBatis 会直接将 ${ } 替换为参数的值,这种方式存在 SQL 注入风险,通常用于动态表名、列名等场景。例如:

    <select id="selectUserByColumn" resultType="com.example.entity.User">
        SELECT * FROM users WHERE ${column} = #{value}
    </select>

    四、动态 SQL

    MyBatis 提供了强大的动态 SQL 功能,可以根据不同的条件动态生成 SQL 语句。常用的动态 SQL 标签有 <if>、<choose>、<when>、<otherwise>、<where>、<set>、<foreach> 等。

    1. <if> 标签:用于条件判断,只有当条件成立时才会包含该 SQL 片段。例如:

    <select id="selectUserByCondition" resultType="com.example.entity.User">
        SELECT * FROM users
        <where>
            <if test="name != null and name != ''">
                AND name = #{name}
            </if>
            <if test="age != null">
                AND age = #{age}
            </if>
        </where>
    </select>

    2. <choose>、<when>、<otherwise> 标签:类似于 Java 中的 switch 语句,会依次判断 <when> 标签的条件,一旦某个条件成立就会执行该 <when> 标签内的 SQL 片段,若所有条件都不成立则执行 <otherwise> 标签内的 SQL 片段。例如:

    <select id="selectUserByChoose" resultType="com.example.entity.User">
        SELECT * FROM users
        <where>
            <choose>
                <when test="name != null and name != ''">
                    AND name = #{name}
                </when>
                <when test="age != null">
                    AND age = #{age}
                </when>
                <otherwise>
                    AND 1 = 1
                </otherwise>
            </choose>
        </where>
    </select>

    3. <foreach> 标签:用于遍历集合,常用于批量操作。例如:

    <delete id="deleteUsersByIds" parameterType="java.util.List">
        DELETE FROM users WHERE id IN
        <foreach item="id" collection="list" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>

    五、结果映射

    当数据库表的列名和实体类的属性名不一致时,需要使用结果映射来建立它们之间的映射关系。MyBatis 提供了 <resultMap> 标签来实现结果映射。以下是一个示例:

    <resultMap id="UserResultMap" type="com.example.entity.User">
        <id property="id" column="user_id"/>
        <result property="name" column="user_name"/>
        <result property="age" column="user_age"/>
    </resultMap>
    <select id="selectUserByIdWithResultMap" resultMap="UserResultMap">
        SELECT user_id, user_name, user_age FROM users WHERE user_id = #{id}
    </select>

    在上述代码中,<resultMap> 标签定义了一个名为 UserResultMap 的结果映射,<id> 标签用于映射主键,<result> 标签用于映射普通属性。在 <select> 标签中,使用 resultMap 属性引用了该结果映射。

    六、总结

    MyBatis 的 XML 配置文件在整个框架中起着关键作用,通过核心配置文件可以配置数据源、事务管理器等全局信息,通过 XML 映射文件可以定义 SQL 语句和实体类之间的映射关系。同时,MyBatis 提供的参数处理、动态 SQL 和结果映射等功能,使得开发者可以更加灵活地编写和管理 SQL 语句。掌握 MyBatis 的 XML 配置文件的使用,对于开发高效、安全的持久层应用程序至关重要。

    在实际开发中,要根据具体的业务需求合理使用各种标签和功能,同时要注意 SQL 注入等安全问题。通过不断实践和学习,能够更好地发挥 MyBatis 的优势,提高开发效率和代码质量。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号