Mybatis教程
Mybatis 简介
Mybatis 概述
Mybatis 与 Hibernate 对比
环境搭建
JDK、MySQL、Maven 安装配置
Mybatis 依赖添加
Mybatis 配置文件
mybatis-config.xml 全局配置文件
Mapper XML文件
Mybatis 核心概念
CRUD 操作
高级映射
动态 SQL
事务管理
Mybatis 与 Spring 集成
Mybatis 插件开发
性能优化
Mybatis 常见问题及解决方案
实战案例
-
+
首页
Mapper XML文件
在 MyBatis 中,`mapper XML` 文件用于定义 SQL 语句和配置映射信息。以下是关于 `mapper XML` 文件中 SQL 语句编写、参数和返回值配置的详细介绍: ### 1. mapper XML文件的基本结构 一个典型的 `mapper 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语句和配置 --> </mapper> ``` - `namespace`:命名空间,通常是一个完整的 Java 接口名,用于区分不同的 mapper 文件。 ### 2. SQL语句编写 在 `mapper XML` 文件中,你可以定义各种 SQL 语句,如 `select`、`insert`、`update` 和 `delete`。 #### 示例:查询语句 ```xml <select id="selectUserById" parameterType="int" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id} </select> ``` - `id`:标识符,用于在 Java 代码中调用此 SQL 语句。 - `parameterType`:参数类型,指定传入参数的类型。 - `resultType`:返回类型,指定查询结果的类型。 #### 示例:插入语句 ```xml <insert id="insertUser" parameterType="com.example.User"> INSERT INTO users (id, name, email) VALUES (#{id}, #{name}, #{email}) </insert> ``` ### 3. 参数和返回值配置 #### 参数配置 在 MyBatis 中,参数可以通过 `${}` 或 `#{}` 来传递: - `${}`:字符串替换,直接将参数值拼接到 SQL 语句中,容易产生 SQL 注入。 - `#{}`:预编译处理,参数值作为预编译参数传递,可以有效防止 SQL 注入。 #### 返回值配置 - `resultType`:指定返回结果的类型,通常用于 `select` 语句。 - `resultMap`:自定义结果集的映射,可以指定复杂的结果映射关系。 #### 示例:使用 resultMap ```xml <resultMap id="UserResultMap" type="com.example.User"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="email" column="email" /> </resultMap> <select id="selectUserById" resultMap="UserResultMap"> SELECT * FROM users WHERE id = #{id} </select> ``` ### 4. 动态 SQL MyBatis 支持动态 SQL,可以根据条件构建 SQL 语句,常用的动态 SQL 标签包括: - `<if>` - `<choose>` - `<when>` - `<otherwise>` - `<foreach>` #### 示例:使用 `<if>` 标签 ```xml <select id="selectUsersByName" parameterType="map" resultType="com.example.User"> SELECT * FROM users <where> <if test="name != null"> AND name = #{name} </if> <if test="email != null"> AND email = #{email} </if> </where> </select> ``` 在这个示例中,`<where>` 标签会自动处理 SQL 中的 `AND`,如果条件不满足,则不会包含该条件。 通过这些配置,你可以灵活地编写 SQL 语句,并精确地控制参数和返回值的映射。
wwbang
2024年12月26日 16:57
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码