mybatis之in和charindex的使用

mybatis之in的使用   

大家在一条sql中传入多个查询数据时都会使用的in关键字,可是在sql中明明好好的执行,到了程序中要么报错要么查询为空。原因在于在mybatis中,默认in属性为传递多个数据,则需要遍历循环去读取,外部通过数组或者集合的方式传入,示例如下

   Java调用代码

 String[] cIdArrays = cId.split(",");
        List<Map<String,Object>> queryCourseTypeInfo = eduCourseExtMapper.queryCourseTypeInfo(cIdArrays,pageCode);

   Mapper.java代码

List<Map<String,Object>> queryCourseTypeInfo(@Param("arrays") String[] arrays, @Param("pageCode") Integer pageCode);

   mapper.xml代码

<select id="queryCourseTypeInfo" resultType="java.util.Map">
        select
        <if test="pageCode!=null and pageCode!=''">
           top 6
        </if>
        course_name courseName,
        (select file_url from tmp_file where id=cours_img) faceUrl,
        introduction
        from aaa
        where CONVERT (varchar, classification_id) in
        <foreach item="arrays" index="index" collection="arrays" open="(" separator="," close=")">
            #{arrays}
        </foreach>
        order by create_time desc;
    </select>

此处去Mapper.java中params为arrays的数组进行遍历,然后读取数组中的值就可以达到in关键字的效果,讲道理之前没怎么用这个操作,傻乎乎的一个人弄了好久,还得继续学习。

 

charindex的使用

话不多说先上图,其实和java中的indexOf有些类似,用于定位某个元素,大家再来看看我的需求

需求:一个字段为.123.456.的参数,我需要截取第一个点后到第二点前的数据,我的sql片段如下:

substring(t4.seq,2,charindex('.',t4.seq,2)-2)

起始点为第二个下标,止于第五个下标前,但是...charindex返回给我的并不是第二点的真实下标,所以我后面采用了-2的操作,这样就有一点没有用到定位indexOf的操作,如果哪位朋友有见解欢迎评论滴滴我

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值