MyBatis新特性

1、Mybatis插入记录后返回主键ID

<insert id="INSERT"
        parameterType="com.jd.jr.gyl.securitization.domain.po.abs.Batch"
        useGeneratedKeys="true" keyProperty="id">
    INSERT into  Batch(
    is_effect,
    reserve_field_int,
    reserve_field_varchar
    ) values(
    now(),
    1,
    #{reserveFieldInt},
    #{reserveFieldVarchar}
    )
    <selectKey resultType="java.lang.Long" order="AFTER"
               keyProperty="id">
        SELECT LAST_INSERT_ID()
    </selectKey>
</insert>
解析:
设置是否自动增长:seGeneratedKeys="true" ;
设置自动增加的主键ID:keyProperty="id";
返回上次插入的主键ID
    <selectKey resultType="java.lang.Long" order="AFTER"
               keyProperty="id">
        SELECT LAST_INSERT_ID()
    </selectKey>
2、批量插入数据
<insert id="INSERTBATCH" parameterType="java.util.List" useGeneratedKeys="true">
    INSERT into Batch(
    reserve_field_varchar
    ) values
    <foreach collection="list" index="index" item="item" separator=",">
      (
        #{item.reserveFieldVarchar}
        )
    </foreach>
</insert>
3、单条更新
<!--更新批次-->
<update id="UPDATE" parameterType="com.jd.jr.gyl.securitization.domain.po.abs.Batch">
    UPDATE  Batch
    <set>
        <if test="remark!=null ">
            remark=#{remark},
        </if>
        modify_time=NOW()
    </set>
    WHERE id=#{id}
</update>
4、批量更新
<update id="UPDATEBATCH" parameterType="java.util.List">
    <foreach collection="list" index="index" close="" open="" item="item" separator=";">
        UPDATE  Batch
        <set>
            <if test="item.remark!=null and item.remark!=''">
                remark=#{item.remark}
            </if>
        </set>
        <where>
            id=#{item.id}
        </where>
    </foreach>
</update>
5、复合查询
<!--查询批次总条数-->
<select id="queryTotalCountsByMutliParams"
        resultType="java.lang.Integer"
        parameterType="java.util.Map">
    SELECT
    count(1)
    FROM Org_Detail org join Special_Plan s on org.id=s.plan_manager_id
    join Asset_Extract_Batch a on s.id=a.plan_id
    <where>
        <if test="extractStatus!=null and extractStatus!=''">
            <choose>
                <when test="extractStatus == 1">
                    AND a.extract_status = 1
                    <![CDATA[ AND (a.`plan_date_start` <= NOW()]]>
                </when>
                <when test="extractStatus == 4">
                    AND a.extract_status = 1
                    <![CDATA[ AND (a.`plan_date_start` > NOW()]]>
                </when>
                <when test="extractStatus != 4 and extractStatus != 1">
                    AND a.extract_status = #{extractStatus}
                </when>
            </choose>

        </if>
        <if test="extractTimeStart!=null and extractTimeStart!=''">
            AND a.extract_time &gt;=#{extractTimeStart}
        </if>
        <if test="extractTimeEnd!=null and extractTimeEnd!=''">
            AND a.extract_time &lt;=#{extractTimeEnd}
        </if>
        and a.is_effect=1
    </where>
</select>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值