008--MyBatics相关的SQL书写

1.1 Select参数Map中带有List和普通参数,并且伴随>,<,=,like判断,<where>标签

    <select id="queryCouponSortsList" parameterType="HashMap"
        resultType="HashMap" resultMap="queryCouponSortsListMap">
        SELECT
            cpt.*
        FROM
            a_coupon_cpt cpt
        JOIN a_coupon_ctur ctur ON cpt.cptSequence = ctur.cptSequence
        <where>
            <if test="null != customerList">AND ctur.pdCode in 
                <foreach collection="customerList" item="item" index="index" open="(" separator="," close=")">#{item}</foreach>
            </if> 
            <if test="null != cptCode">AND cpt.cptCode like '%${cptCode}%'</if>
            <if test="null != cptType">AND cpt.cptType = #{cptType}</if>
            <if test="'N'.toString()== cptStatus" >
                AND cpt.cptStatus = #{cptStatus}
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>
                <if test="null != cptExpiryTime">AND #{cptExpiryTime} >= cpt.cptExpiryTime</if>
            </if>
            <if test="null == cptStatus">
                AND cpt.cptStatus = 'N'
                        AND (cpt.cpmrType = 'R' OR cpt.cpmrType = 'A')
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>

                <if test="null != cptExpiryTime">AND #{cptExpiryTime} >= cpt.cptExpiryTime</if>
            </if>
            <if test="null != ueabUserOpenID and null == unionID">AND  ue.ueabUserOpenID = #{ueabUserOpenID}</if>
        </where>
        ORDER BY 
        cpt.cptSequence DESC
    </select> 

1.2 Select直接使用where(貌似不能使用'0'把数字包起来)

    <select id="selectUserReceivedCouponList" parameterType="Map"
        resultType="HashMap">
        SELECT
            cpmr.*
        FROM
            a_coupon_cpmr  cpmr
        INNER JOIN a_coupon_cpo  cpo ON cpmr.cpmrSequence = cpo.cpmrSequence
        WHERE
            <!-- 可以使用优惠券 -->
            <if test="cpStatus ==0">
                    cpo.expireTime >= #{currentTime} 
                <!-- AND    cpo.customerSequence = #{customerSequence} -->
                AND cpo.customerSequence = '2'
                AND cpo.cpStatus = '0'
            </if>
            <!-- 已经使用优惠券 -->
            <if test="cpStatus ==1">
                <!-- AND    cpo.customerSequence = #{customerSequence} -->
                cpo.customerSequence = '2'
                AND cpo.cpStatus = '1'
            </if>
            <!-- 过期优惠券 -->
            <if test="cpStatus ==2">
                    #{currentTime} >cpo.expireTime
                <!-- AND    cpo.customerSequence = #{customerSequence} -->
                AND cpo.customerSequence = '2'
                AND cpo.cpStatus = '0'
            </if>
    </select>

1.3 Select如果在一个范围内就转化成ture,否则就是false

        SELECT DISTINCT
            pdCode,
            pdName,
        if(pdCode in  (
        <foreach collection="customerSelectedList" item="pdCode" index="index" separator=",">
                #{pdCode}
         </foreach>),'true','false')  isSelected
        FROM
            a_pd
        WHERE pmSequence = 10086

1.4 Select多个判断“或/且”关系

    <select id="selectUserReceivedCouponList" parameterType="Map"
        resultType="HashMap">
        SELECT
            cpmr.*
        FROM
            a_coupon_cpmr  cpmr
        WHERE
        INNER JOIN a_coupon_cpo  cpo ON cpmr.cpmrSequence = cpo.cpmrSequence
<if test='((pType == "0" || pType == "1") and (null == consumeType || consumeType == "1")) || ((pType == "0" || pType == "2") and (null == consumeType || consumeType == "2")) || ((pType == "0" || pType == "3") and (null == consumeType || consumeType == "3"))'>
        cpt.cptStatus = 'N'
</if>
<if test='null != param1 and null != param2'>ORDER BY w.branchSequence, w.warnTime</if>

1.5 Select重用代码

<!--1. 定义好重用的代码 -->
<sql id="Base_Column_List" >name,age</sql>

<!-- 2.然后通过id引用 -->
<select id="selectAll">
    SELECT
        <include refid="Base_Column_List" />
    FROM student
</select>

1.6 Select进行查找

    <resultMap id="queryCouponSortsListMap" type="cn.smartcandy.application.a.commonbean.CouponType" >  
        <id property="cptSequence" column="cptSequence" />  
        <result property="cptExpiryTime" column="cptExpiryTime" />  
        <collection property="customerList" javaType="java.util.List" ofType="String">
            <constructor><arg column="customerList"/></constructor>
        </collection>
    </resultMap>   

    <!-- 1、查询券种列表:(√) -->
    <select id="queryCouponSortsList" parameterType="HashMap"
        resultType="HashMap" resultMap="queryCouponSortsListMap">
        SELECT
            cpt.*
        FROM
            a_coupon_cpt cpt
        JOIN a_coupon_ctur ctur ON cpt.cptSequence = ctur.cptSequence
        <where>
            <if test="null != customerList">AND ctur.pdCode in 
                <foreach collection="customerList" item="item" index="index" open="(" separator="," close=")">#{item}</foreach>
            </if> 
            <if test="null != cptCode">AND cpt.cptCode like '%${cptCode}%'</if>
            <if test="null != cptName">AND cpt.cptName like '%${cptName}%'</if>
            <if test="null != cptType">AND cpt.cptType = #{cptType}</if>
            <if test="null != cptAppliableBranch">AND cpt.cptAppliableBranch = #{cptAppliableBranch}</if>
            <if test="null != limitPeriod">AND cpt.limitPeriod = #{limitPeriod}</if>
            <if test="'N'.toString()== cptStatus" >
                AND cpt.cptStatus = #{cptStatus}
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>
                <if test="null != cptExpiryTime">AND #{cptExpiryTime} >= cpt.cptExpiryTime</if>
            </if>
            <if test="'D'.toString()== cptStatus" >
                AND cpt.cptStatus = #{cptStatus}
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>
                <if test="null != cptExpiryTime">AND #{cptExpiryTime} >= cpt.cptExpiryTime</if>
            </if>
            <if test="'O'.toString()== cptStatus">
                AND cpt.cptStatus = 'N'
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>
                <if test="null != currentTime">AND #{currentTime} >= cpt.cptExpiryTime</if>
            </if>
            <if test="null == cptStatus">
                AND cpt.cptStatus = 'N'
                <if test="null != cptEffectiveTime">AND cpt.cptEffectiveTime >= #{cptEffectiveTime}</if>
                <if test="null != cptExpiryTime">AND #{cptExpiryTime} >= cpt.cptExpiryTime</if>
            </if>
        </where>
        ORDER BY 
        cpt.cptSequence DESC
    </select> 

1.7 Select in (List集合)

<select id="findByIdsMap" resultMap="BaseResultMap">  
 Select  
 <include refid="Base_Column_List" />  
 from jria where ID in  
 <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
  #{item}  
 </foreach>  
</select>  

1.8 Select in (Array数组)

<select id="findByIdsMap" resultMap="BaseResultMap">  
select  
<include refid="Base_Column_List" />  
from tabs where ID in  
<foreach item="item" index="index" collection="array" open="(" separator="," close=")">  
 #{item}  
</foreach>  
   </select>  

2.1 Insert批零数据的导入(SQL)

    <insert id="couponTypeBranchAdd" parameterType="java.util.List">
        INSERT INTO a_coupon_ctbr(
            cptSequence,
            branchSequence,
            cpmrSequence
        )VALUES
        <foreach collection="list" item="couponBranch" separator=",">
            (
            #{couponBranch.cptSequence},
            #{couponBranch.branchSequence},
            #{couponBranch.cpmrSequence}
            )
        </foreach>
    </insert>

2.2 Insert批零数据的导入(JAVA)

    public static void main(String[] args) {
        int num = 598;//总数量
        int batch = 200;//批量每次操作的个数
        int count = num/batch + 1;//一定会操作的次数
        int tempNum = 0;//当前操作的索引
        System.out.println("请求的次数:"+count);
        for (int i = 0; i < count; i++) {
            for (int j = 0; j < batch; j++) {
                tempNum = i*batch+j; 
                if (tempNum<num) {
                    System.out.println("-------->"+tempNum);
                }
            }
            System.out.println("已经成功打印100次");
        }
    }

3.1 Update更新语句使用trim去除“,”

    <update id="couponBatchMakeCouponNum" parameterType="HashMap">
        UPDATE a_coupon_cpmr
            <trim prefix="set" suffixOverrides=",">
                <if test="batch_no!=null">batch_no = #{batch_no},</if>
                <if test="cpmrType!=null">cpmrType = #{cpmrType},</if>
            </trim>
        WHERE
            cpmrSequence = #{cpmrSequence}
    </update>

3.2 Update更新语句直接设置

    <update id="couponTypeDelete" parameterType="HashMap">
        UPDATE a_coupon_cpt
        SET
            cptStatus = 'D'
        WHERE cptSequence = #{cptSequence}
    </update>

4.Delete删除语句

    <delete id="couponTypeCustomerDelete">
        DELETE FROM 
            a_coupon_ctur
        WHERE
            cptSequence = #{cptSequence}
    </delete>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,598评论 18 399
  • 什么是SQL数据库: SQL是Structured Query Language(结构化查询语言)的缩写。SQL是...
    西贝巴巴阅读 1,803评论 0 10
  • 50个常用的sql语句Student(S#,Sname,Sage,Ssex) 学生表Course(C#,Cname...
    哈哈海阅读 1,227评论 0 7
  • 想当警察 小刚的父亲是名刑警。 很小的时候,父亲就开始教授一些防身的技能。小刚对父亲很是崇拜,对于父亲的传...
    正式工阅读 540评论 1 1
  • 不知是什么原因,也许是当时自己的心境比较低落,也许是想消磨一点无聊的时光,又或者是因为想寻找一部合乎口味的动画片。...
    大洪阅读 1,808评论 0 0