首页 > 其他分享 >MyBatis `<include refid="XXX">`标签详解

MyBatis `<include refid="XXX">`标签详解

时间:2023-11-27 14:59:05浏览次数:42  
标签:片段 标签 详解 user SQL MyBatis orderType id

MyBatis <include refid="XXX">标签详解

MyBatis作为一种优秀的持久化框架,提供了丰富的XML配置选项,其中<include>标签是一个非常有用的特性,用于引入SQL片段,提高代码的可维护性和可读性。

解释

  • <include>标签用于引用SQL代码片段。
  • refid是引用的SQL片段的id名称,必须保持唯一。

作用

  • 避免重复编写相同的SQL片段,提高代码复用性。
  • 方便后期维护,当需要修改SQL片段时,只需修改片段的定义,而不必修改每个引用该片段的地方。
  • 在SQL语句中明确指定字段,而不使用*通配符,有助于提高代码效率。

代码示例

<sql id="Student_Column_List" >
    studentID, studentName, studentAge, studentEmail, studentComment
</sql> 

<select id="selectByPrimaryKey" resultMap="com.rr.dto.StudentDto" parameterType="java.lang.Long">
    select 
    <include refid="Student_Column_List" />
    from t_student
    where studentID = #{studentID, jdbcType=BIGINT}
</select>

返回自增id

在插入操作中,如果需要返回自增id,可以使用以下方式:

<insert id="insertSelective" parameterType="cn.tencent.eee.aaa.dao.model.User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入操作的具体语句 -->
</insert>

注意:

  1. 通过以上方式获取自增id时,会直接赋值到领域模型的实体id中,可以通过实体对象的id属性获取。

    Integer i = user.getId;
    if(userMapper.insertSelective(user) > 0){
       i = user.getId;
    }
    
  2. 如果<insert>标签包含多条insert语句,返回的自增id将是最后一条insert语句生成的id。

动态排序示例

SELECT 
    name, sex, age, user_grade as userGrade
FROM user
<if test="orderField != null" >
    ORDER BY
    <choose>
        <when test="orderField == 'name'">
            name ${orderType}
        </when>
        <when test="orderField == 'age'">
            age ${orderType}
        </when>
        <when test="orderField == 'userGrade'">
            user_grade ${orderType}
        </when>
        <otherwise>
            create_time ${orderType}
        </otherwise>
    </choose>
</if>

上述示例中,使用<choose><when>标签根据传入的参数进行动态排序,提高了查询灵活性。

注意: mapper接口和xml包名要保持一致,以免出现扫描不到的问题。这是一个常见的错误,容易被忽视。

标签:片段,标签,详解,user,SQL,MyBatis,orderType,id
From: https://www.cnblogs.com/bunnyfufuu666blog/p/17859339.html

相关文章

  • Spring MVC学习随笔-控制器(Controller)开发详解:接受客户端(Client)请求参数
    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅第三章、SpringMVC控制器开发详解3.1核心要点......
  • 华为认证 | Security安全认证学什么?IA、IP、IE学习内容详解!
    互联网高速发展的如今,网络安全愈发受到重视,所以很多互联网相关的认证都推出了安全方向的认证。作为国内一大厂商的华为自然也是不例外的,毕竟华为认证覆盖ICT全领域,怎么会少得了安全方向呢?那么网络安全华为认证到底是什么?有何用处?接下来在这篇文章中为大家讲解清楚。01网络安全华......
  • 华为认证 | 华为认证体系超全详解!
    华为作为全球领先的科技企业,其认证体系备受瞩目。华为认证体系是华为技术有限公司推出的全球性IT认证标准,旨在为全球范围内的企业和个人提供专业的IT技能认证。华为认证体系涵盖了路由、交换、安全、存储等多个领域,为IT从业者提供了全面的技能提升和认证机会。下面我们就来了解一下......
  • MyBatis 大于等于小于等于常用写法
    前言经常在工作中使用mybatis范围筛选的时候忘记大于等于小于怎么写,这里做记录分享给有需要的人。不喜别喷方法一:使用转义字符含义原符号转义字符小于<<小于等于<=<=大于>>大于等于>=>=逻辑与(和)&&amp;单引号‘&apos;双引号“"使用示......
  • WGCLOUD 基础详解 常用命令笔记
    WGCLOUD在v3.4.9版本新增了一个模块【常用命令笔记】这个模块非常有用,对我的工作非常有帮助,可以把我常用的一些命令或文档记录下来,也可以当作记事本使用,记录一些笔记使用简单,而且方便......
  • linux之进程控制(万字长文详解)
    进程控制进程创建——fork函数用于创建子进程的系统调用接口!这是一个函数函数执行前只有一个父进程,函数执行后有一个父进程一个子进程进程调用fork,当控制转移到内核中的fork代码后,内核做分配新的==内存块和内核数据结构(PCB,地址空间,页表)==给子进程将父进程部分数据结构内......
  • numpy模块详解
    ###开发环境介绍-anaconda-官网:https://www.anaconda.com/-集成环境:集成好了数据分析和机器学习中所需要的全部环境-注意:-安装目录不可以有中文和特殊符号-jupyter-jupyter就是anaconda提供的一个基于浏览器的可视化开发工具-jupyter的基本使用-启动:在......
  • Prometheus Go client library 详解
    介绍Prometheus支持4种指标类型,分别是Counter、Gauge、Histogram和Summary。Counter指标类型,指标值是只能递增,不能递减的数值。需要注意的是,当Prometheusserver重启时,指标值会被重置为0。该指标类型可用于统计接口的请求数、错误数等使用场景。Gauge指标类型,指标......
  • SQL 中的运算符与别名:使用示例和语法详解
    SQL中的IN运算符IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写。示例:获取您自己的SQLServer返回所有来自'Germany'、'France'或'UK'的客户:SELECT*FROMCustomersWHERECountryIN('Germany','France','UK');语法:SELECTcolumn_name(......
  • SQL 中的运算符与别名:使用示例和语法详解
    SQL中的IN运算符IN运算符允许您在WHERE子句中指定多个值,它是多个OR条件的简写。示例:获取您自己的SQLServer返回所有来自'Germany'、'France'或'UK'的客户:SELECT*FROMCustomersWHERECountryIN('Germany','France','UK');语法:SELECTcolumn_name(......