MyBatis映射配置 - XML配置、注解配置、动态SQL

润信云 技术支持

MyBatis映射配置:XML配置、注解配置、动态SQL

一、引言

MyBatis是一款优秀的持久层框架,它提供了灵活多样的映射配置方式,包括XML配置、注解配置以及强大的动态SQL功能,这些配置方式帮助开发者高效地实现数据库操作。

二、XML配置

1. 配置文件结构

在MyBatis中,XML映射文件通常与Mapper接口相对应。以查询用户信息为例,XML文件中包含<mapper>标签,其中的namespace属性值与Mapper接口的全限定名一致,这样可以建立接口与映射文件的关联。

2. SQL语句定义

<mapper>标签内,通过<select><insert><update><delete>等标签定义SQL语句。例如:

Xml
<mapper namespace="com.example.dao.UserMapper">
    <select id="getUserById" parameterType="int" resultType="com.example.entity.User">
        SELECT * FROM users WHERE id = #{id}
    </select>
</mapper>

这里id是SQL语句在Mapper接口中的方法名,parameterType指定传入参数类型,resultType指定返回结果类型。

3. 结果映射

当数据库表字段与实体类属性名不一致时,可使用<resultMap>进行结果映射。比如:

Xml
<resultMap id="userResultMap" type="com.example.entity.User">
    <id property="userId" column="id"/>
    <result property="userName" column="name"/>
</resultMap>
<select id="getUserById" parameterType="int" resultMap="userResultMap">
    SELECT id, name FROM users WHERE id = #{id}
</select>

三、注解配置

1. 简单注解

MyBatis提供了一系列注解用于简化配置。例如,@Select注解用于定义查询语句:

Java
import org.apache.ibatis.annotations.Select;
import com.example.entity.User;

public interface UserMapper {
    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(int id);
}

2. 复杂注解

对于更复杂的操作,如插入数据时返回自增主键,可使用@Options注解配合@Insert注解:

Java
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import com.example.entity.User;

public interface UserMapper {
    @Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    int insertUser(User user);
}

四、动态SQL

1. <if>标签

动态SQL允许根据不同条件生成不同的SQL语句。例如,根据用户姓名和年龄进行条件查询:

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

2. <choose><when><otherwise>标签

类似于Java中的switch - case语句,用于多条件选择。如:

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

五、总结

XML配置适合复杂的SQL定义和结果映射;注解配置简洁直观,适用于简单的数据库操作;动态SQL则极大地提高了SQL语句的灵活性和复用性。开发者可根据实际需求选择合适的映射配置方式,以提升开发效率和代码质量。

本文链接:https://blog.runxinyun.com/post/545.html 转载需授权!

版权声明
网站名称: 润信云资讯网
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!邮件:7104314@qq.com
网站部分内容来源于网络,版权争议与本站无关。请在下载后的24小时内从您的设备中彻底删除上述内容。
如无特别声明本文即为原创文章仅代表个人观点,版权归《润信云资讯网》所有,欢迎转载,转载请保留原文链接。
0 73

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。