• Mybatis的XML配置文件


    Xml文件中写SQL

    为什么要学?

    学习了Mybatis中XML配置文件的开发方式了,大家可能会存在一个疑问:到底是使用注解方式开发还是使用XML方式开发?

    官方说明:https://mybatis.net.cn/getting-started.html

    image-20220901173948645

    结论:使用Mybatis的注解,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句。

    Mybatis的XML配置文件

    Mybatis的开发有两种方式

    1. 注解
    2. XML

    1.XML配置文件规范

    使用Mybatis的注解方式,主要是来完成一些简单的增删改查功能。如果需要实现复杂的SQL功能,建议使用XML来配置映射语句,也就是将SQL语句写在XML配置文件中。

    在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:

    1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)

    2. XML映射文件的namespace属性为Mapper接口全限定名一致

    3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。

    image-20221212153529732

    image-20240310112548336

    2.XML配置文件实现

    第1步:创建XML映射文件

    image-20221212154908306

    image-20221212155304635

    image-20221212155544404

    第2步:编写XML映射文件

    xml映射文件中的dtd约束,直接从mybatis官网复制即可

    MyBatis中文网

    
    DOCTYPE mapper
      PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
      "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="">
     
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    配置:XML映射文件的namespace属性为Mapper接口全限定名

    配置:XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

    image-20221212163528787

    
    DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.itheima.mapper.EmpMapper">
    
        
        <select id="list" resultType="com.itheima.pojo.Emp">
            select * from emp
            where name like concat('%',#{name},'%')
                  and gender = #{gender}
                  and entrydate between #{begin} and #{end}
            order by update_time desc
        select>
    mapper>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    运行测试类,执行结果:

    image-20221212163719534

    3.动态SQL-sql&include

    问题分析:

    • 在xml映射文件中配置的SQL,有时可能会存在很多重复的片段,此时就会存在很多冗余的代码

    我们可以对重复的代码片段进行抽取,将其通过标签封装到一个SQL片段,然后再通过标签进行引用

    • :定义可重用的SQL片段

    • :通过属性refid,指定包含的SQL片段

    image-20221213171244796

    SQL片段: 抽取重复的代码

    <sql id="commonSelect">
     	select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time from emp
    sql>
    
    • 1
    • 2
    • 3

    然后通过 标签在原来抽取的地方进行引用。操作如下:

    <select id="list" resultType="com.itheima.pojo.Emp">
        <include refid="commonSelect"/>
        <where>
            <if test="name != null">
                name like concat('%',#{name},'%')
            if>
            <if test="gender != null">
                and gender = #{gender}
            if>
            <if test="begin != null and end != null">
                and entrydate between #{begin} and #{end}
            if>
        where>
        order by update_time desc
    select>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    凌恩客户文章|菜豆“不菜”——浙江省农科院新发现:菜用大豆和粮用大豆可能是独立训驯化
    云原生微服务治理经典框架之Spring Cloud Alibaba核心技术与实战案例
    js 防抖和节流应用场景和实例
    每日一学—Web API之requestAnimationFrame
    【数据结构】—— 单链表的增删改查
    三种常见的移动底盘运动学模型分析
    python容器模块Collections
    如何制作网页链接自动录入工具
    SpringCloud文件上传
    基于JAVA幼儿影视节目智能推荐系统计算机毕业设计源码+系统+数据库+lw文档+部署
  • 原文地址:https://blog.csdn.net/qq_46603351/article/details/136598174