首页 > 其他分享 >MyBatis的常用动态标签

MyBatis的常用动态标签

时间:2024-02-03 23:32:38浏览次数:28  
标签:ename -- 标签 age sex eid SQL MyBatis 动态

1、<sql>

<!-- 
    <sql id=""></sql>:设置一段SQL片段,即公共SQL,可以被当前映射文件中所有的SQL语句所访问
    <include refid="empColumns"></include>:访问某个SQL片段
-->
<sql id="empColumns">
    select eid,ename,age,sex,did from emp
</sql>


2、<include>

<!-- Emp getEmpByEid(String eid); -->
<select id="getEmpByEid" resultType="Emp">
    <include refid="empColumns" /> where eid = #{eid}
</select>


3、<if>, <where>, <trim>

<!-- 
    <if test=""></if>:通过test表达式,拼接SQL
    <where>:添加where关键字,同时去掉多余的and
    <trim prefix="" suffix="" prefixOverrides="" suffixOverrides="">:截取并拼接
        prefix:在操作的SQL语句前加入某些内容
        suffix:在操作的SQL语句后加入某些内容
        prefixOverrides:把操作的SQL语句前的某些内容去掉
        suffixOverrides:把操作的SQL语句后的某些内容去掉
-->

<!-- List<Emp> getEmpListByCondition(); -->
<select id="getEmpListByCondition" resultType="Emp">
    select eid,ename,age,sex,did from emp
    <where>
        <if test="eid != null">
            and eid = #{eid}
        </if>
        <if test="ename != null and ename != ''">
            and ename = #{ename}
        </if>
        <if test="age != null">
            and age = #{age}
        </if>
        <if test="sex == 1 or sex == 0">
            and sex = #{sex}
        </if>
    </where>
</select>


<!-- List<Emp> getEmpListByCondition2(); 多条件查询:若页面中没有设置此条件,SQL语句中一定不能有该条件 -->
<select id="getEmpListByCondition2" resultType="Emp">
    <include refid="empColumns" />
    <trim prefix="where" suffixOverrides="and|or">
        <if test="eid != null">
            eid = #{eid} and
        </if>
        <if test="ename != null and ename != ''">
            ename = #{ename} and
        </if>
        <if test="age != null">
            age = #{age} or
        </if>
        <if test="sex == 1 or sex == 0">
            sex = #{sex}
        </if>
    </trim>
</select>


4、<choose><when><otherwise>

<!-- 
    <choose>:选择某一个when或otherwise拼接SQL
        <when test=""></when>:通过test表达式拼接SQL
        .
        .
        <otherwise></otherwise>:当when都不符合条件,就会选择otherwise拼接SQL
    </choose>
-->

<!-- 查询 -->
<!-- List<Emp> getEmpListByChoose(Emp emp); -->
<select id="getEmpListByChoose" resultType="Emp">
    select eid,ename,age,sex from emp
    where
    <choose>
        <when test="eid != null">
            eid = #{eid}
        </when>
        <when test="ename != null and ename != ''">
            ename = #{ename}
        </when>
        <when test="age != null">
            age = #{age}
        </when>
        <otherwise>
            sex = #{sex}
        </otherwise>
    </choose>
</select>


<!-- 插入 -->
<!-- void insertEmp(Emp emp); -->
<insert id="insertEmp">
    insert into emp(eid,ename,age,sex) values(
        null,
        #{ename},
        #{age},
        <choose>
            <when test="sex == 0">'女'</when>
            <when test="sex == 1">'男'</when>
            <otherwise>'不详'</otherwise>
        </choose>
    )
</insert>


5、<foreach>

<!-- 
    <foreach collection="" item="" close="" open="" separator="" index=""></foreach>
    对一个数组或集合进行遍历
        collection:指定要遍历的集合或数组
        item:设置别名,循环变量
        close:设置循环体的结束内容
        open:设置循环体的开始内容
        separator:设置每一次循环之间的分隔符
        index:若遍历的是list,index代表下标;若遍历的是map,index代表键
-->

<!-- void deleteEmps(List<Integer> eids); -->
<!-- 示例:delete from emp where eid in (1, 2, 3) -->
<delete id="deleteEmps">
    delete from emp where eid in
    <foreach collection="eids" item="eid" separator="," open="(" close=")">
        #{eid}
    </foreach>
</delete>



标签:ename,--,标签,age,sex,eid,SQL,MyBatis,动态
From: https://blog.51cto.com/u_16231213/9570664

相关文章

  • 动态规划--线性dp
    线性dp动态规划步骤:1.状态表示用几维度的数组,每一维度的意思。2.状态计算状态转移方程   题目:数字三角形给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最......
  • 动态sql语句
    MyBatis的动态sql语句sql语句是根据查询条件动态的变化mybatis提供一些动态sql的标签常用的动态sql标签: IF标签使用 如果查询条件不为空则按照查询条件查询。(可以使用多个IF标签,当IF标签满足时添加where条件)可以满足多个条件语法:<iftest="条件语句"></if>举......
  • MyBatis的XML配置文件及注释
    mybatis.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>......
  • Mybatis之resultMap详解
    resultMap作用是处理数据表中字段与java实体类中属性的映射关系。准备工作①创建数据库&数据表CREATEDATABASE`dbtest1`;CREATETABLE`t_emp`(`emp_id`intNOTNULLAUTO_INCREMENT,`emp_name`varchar(20)DEFAULTNULL,`age`intDEFAULTNULL,`gender`......
  • Spring-xml(+注解)方式整合第三方的框架-mybatis
    1)不需要自定义命名空间:MyBatisSpring整合Mybatis的步骤如下://原始配置<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><dependenc......
  • 微信小程序如何实现动态显示和隐藏某个控件
    Hello大家好!我是咕噜铁蛋!微信小程序作为一种轻量级的应用开发平台,越来越受到开发者和用户的关注。在微信小程序的开发过程中,控制元素的显示和隐藏是一个常见的需求。通过动态显示和隐藏某个控件,我们可以根据用户的操作或特定的条件来提供更好的用户体验。本文铁蛋将为为大家详细介......
  • 在Vue中如何动态绑定class和style属性
    在Vue中,动态绑定class和style属性是我们经常遇到的需求。这个功能允许我们根据不同的条件来动态改变元素的样式,让我们的应用更加灵活和富有交互性。在本篇博客文章中,我将带你深入探索在Vue中如何实现这一功能。首先,让我们了解一下Vue中的class绑定。Vue提供了一种简洁而强大的语法......
  • 金蝶云星空创建普通动态表单
    ##动态表单的种类 ##动态表单与单据的区别单据本质上也是动态表单,只不过单据更多的是用来保存业务数据,而普通的动态表单是用来显示内容,可以简单的理解动态表单就是一个界面。另,单据的实体有对应的表,而动态表单没有。##新建普通动态表单业务需求:售后单明细点击按钮,弹出动......
  • 动态规划做题笔记
    目录线性动态规划[NOIP1999提高组]导弹拦截尼克的任务双子序列最大和Flowers区间动态规划石子合并线性动态规划[NOIP1999提高组]导弹拦截第一问求最长不上升子序列,第二问可以考虑贪心,从左到右依次枚举每个导弹。假设现在有若干个导弹拦截系统可以拦截它,那么我们肯定选择......
  • react antd的Table中,如何动态的改变表格数据
    在ReactAntd中,如果您改变了Table组件的数据源(dataSource),Table会自动重新渲染以反映新的数据。因此,只要您在状态或props中正确更新数据源,Table就会自动更新。以下是一个示例代码片段,展示如何使用React状态(state)和按钮来更改数据源并更新Table组件:importReact,{useState}fr......