MySQL数据库之MYSQL的动态SQL各类语法讲解
小标 2019-03-06 来源 : 阅读 1376 评论 0

摘要:本文主要向大家介绍了MySQL数据库之MYSQL的动态SQL各类语法讲解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

本文主要向大家介绍了MySQL数据库之MYSQL的动态SQL各类语法讲解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

MySQL数据库之MYSQL的动态SQL各类语法讲解

if语法


    <select id="findExistBookset" resultType="int"


        parameterType="AccountsAdjustAccountSet002Dto">


        SELECT COUNT(1) FROM BOK_BOOKSET


        WHERE STATUS='E'


        AND BOOKSET_NAME = #{booksetName}


        <if test="pageModel eq modifyModel">


            AND BOOKSET_ID != #{booksetId}


        </if>


    </select>


    select 


    NVL(sum(PRIN_AMT),0) PRIN_AMT


    from


    SEC_ORG_DEAL


    where


    STATUS IN ('A','E')


    AND ENTRUST_ID = #{entrustId}


    <if test="workflowId != null and workflowId != ''">


AND WORKFLOW_ID != #{workflowId}


</if>


choose, when, otherwise语法


SELECT ASSET_ID assetId,


       SEC_ID secId,


       ISIN_ID isinId,


       SEC_ABBR secAbbr,


       SEC_NAME secName,


       INT_RULE_ID intRuleId,


       RESET_RULE_ID resetRuleId,


       UPDATE_TIME updateTime


  FROM 


<choose>


<when test="tempStorage == '01'">


SEC_INFO_TMP T


</when>


<otherwise>


<if test="hisNo != null and hisNo != ''">


SEC_INFO_HIS T


</if>


<if test="hisNo == null or hisNo == ''">


SEC_INFO T


</if>


</otherwise>


</choose>


where, set语法,解决首尾问题


select


                SUBJECT_NO id,


                SUBJECT_ID object,


                SUBJECT_NAME text,


                '0'||SUBJECT_LEVEL as col


            from


                BOK_SUBJECT


            <where>


                <if test="booksetId != null and booksetId != ''">


                    and BOOKSET_ID = #{booksetId}


                </if>


                and STATUS = 'E'


            </where>


 update WFL_AGENT


        <set>


         <if test="startDate != null and startDate != ''">


               START_DATE = #{startDate,jdbcType=DATE},


        </if>


        <if test="agentType != null and agentType != ''">


               AGENT_TYPE = #{agentType,jdbcType=VARCHAR},


            </if>


            <if test="agentId != null and agentId != ''">


               AGENT_ID = #{agentId,jdbcType=VARCHAR},


            </if>


            <if test="workflowId != null and workflowId != ''">


               WORKFLOW_ID = #{workflowId,jdbcType=VARCHAR}


            </if>


        </set>


        where USER_ID = #{userId,jdbcType=VARCHAR}


        and START_DATE = #{startDateToUpdate,jdbcType=DATE}


最强大的foreach语句   collection是参数,一般是LIST 或者数组   item是迭代的元素


用于批量insert


<insert id="insertSjyzProjAssetInfo" parameterType="java.util.List">


insert into SJYZ_PROJ_ASSET_INFO (


PROJ_ASSET_INFO_ASSET_ID


,PROJ_ASSET_INFO_ASSET_NAME


,PROJ_ASSET_INFO_FINANCING_SIZE


,PROJ_ASSET_INFO_CCY


,INV_RATE_QUO_UPDATE_TIME 


    )


    values


<foreach collection="list" item="INFO" index="index" open="" close="" separator=",">


    ( 


#{INFO.PROJ_ASSET_INFO_ASSET_ID,jdbcType=VARCHAR}


,#{INFO.PROJ_ASSET_INFO_ASSET_NAME,jdbcType=VARCHAR}


,#{INFO.PROJ_ASSET_INFO_FINANCING_SIZE,jdbcType=DECIMAL}


,#{INFO.PROJ_ASSET_INFO_CCY,jdbcType=VARCHAR}


,#{INFO.INV_RATE_QUO_UPDATE_TIME,jdbcType=TIMESTAMP}


       )


</foreach>


  </insert>


用于查询,多个参数实现IN


SELECT NULL AS hisNo,


T.WORKFLOW_ID workflowId,


T.ASSET_ID AS assetId,


T.SEC_ID AS secId,


T.SEC_ABBR secAbbr,


T.SEC_TYPE secType


FROM SEC_INFO_TMP T


WHERE 


T.CREATE_USER = #{loginUserId}


<if test="assetId != null and assetId != ''">


AND T.SEC_ID LIKE '%'||#{assetId}||'%'


</if>


<if test="couponSpecies != null and couponSpecies.size() > 0">


AND T.COUPON_SPECIES IN


<foreach item="item" collection="couponSpecies" index="index"


open="(" separator="," close=")">


'${item}'


</foreach>


</if>


SELECT ASSET_ID 


  FROM PROJ_ASSET_INFO


WHERE STATUS IN ('A','P')


<if test="assetIds != null and assetIds.length > 0">


   AND ASSET_ID IN 


   <foreach item="item" collection="assetIds" index="index"


open="(" separator="," close=")">


#{item}


  </foreach>


</if> 


 include语法  静态包含


<select id="selectSecInfoList" resultType="java.lang.Integer">


<include refid="secInfoList"/>


</select>


<sql id = "secInfoList">


SELECT distinct


secInfo.hisNo,


secInfo.workflowId,


secInfo.assetId,


secInfo.secId,


secInfo.secAbbr,


secInfo.secType,


secInfo.vdate


secInfo ORDER BY secInfo.assetId, secInfo.workflowId DESC


</sql>


          

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程