mybatis使用总结

1.批量添加

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

    insert into student(id,name,age)

    values

    <foreach collection="list" item="item" index="index" separator=",">

        (#{item.id}, #{item.name},#{item.age})

    </foreach>

</insert>

2.批量修改

<update id="updateBatch" parameterType="java.util.List">

    <foreach collection="list" item="item" index="index">

        update student

        <set>

            sex = #{item.sex }

        </set>

where id= #{item.id} 

    </foreach>

</update>

如果拿到Navicat中可以执行但是mybatis中不行时需要在jdbc.url中配置allowMultiQueries=true

3.IFNULL(result1,result2):如果不为null则返回第一个的值,否则返回第二个的值

如:IFNULL(a.iccid,'') as iccid

4.对日期进行格式化

如:DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s') as create_time_str

5.多字段进行检索数据:

(

    g.vin like CONCAT('%',#{equalMap.queryTerminalParam},'%' )
    or f.sim_no like CONCAT('%',#{equalMap.queryTerminalParam},'%' )
    or g.vehicle_number like CONCAT('%',#{equalMap.queryTerminalParam},'%' ) 
    or c.did like CONCAT('%',#{equalMap.queryTerminalParam},'%' )

)

6.IF(表达式,result1,result2):如果表达式结果为true,返回第一个的值,否则返回第二个的值

如:IF(b.vehicle_id is null,0,1) as STATUS效果类似于(CASE WHEN b.vehicle_id IS NULL THEN '0' ELSE '1' END) AS STATUS

7.更新某条记录时判断修改的字段是否已经被使用的判断方法:

SELECT COUNT(1) FROM tb_vehicle where  enable_flag='1' and vehicle_number = #{vehicleNumber} AND ID != #{id}

8.时间段查询写法:

<if test="equalMap != null &amp;&amp; equalMap.startTime != null &amp;&amp; 

equalMap.startTime!=''" >

    and a.operate_time &gt;=#{equalMap.startTime}
</if>

<if test="equalMap != null &amp;&amp; equalMap.endTime != null &amp;&amp; 

equalMap.endTime!=''" >

    and a.operate_time &lt;=#{equalMap.endTime}

</if>

9.单个时间查询写法:

<if test="equalMap != null &amp;&amp; equalMap.loseTime != null &amp;&amp; 

equalMap.loseTime!=''" >

    and a.lose_time&gt;=#{equalMap.loseTime}
    and a.lose_time&lt;=CONCAT(#{equalMap.loseTime},' ','23:59:59')

</if>

10. GROUP_CONCAT:分组后合并数据即将多行数据合并成一行数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值