使用Mybatis注解@Select 实现MySQL中的IN( 替代xml文件中的foreach遍历)

     

        Mybatis提供了两种方式实现查询、更新、删除、增加:

         第一种是xml的形式。

         第二种是注解的形式。

         第一种的缺点就是只要数据库字段发生变化,所要改的地方都很多,极容易因为缺少字段而出错,好处就是可以自动生成很多可以直接使用的方法,第二种的好处就是无论数据库字段怎么变化只需要修改注解一个地方就可以。

        我之前都是用xml的形式来实现交互的,看到同事好多都用注解的形式实现,我也换成用注解的实现方式,发现的确挺方便的,因为我们的项目都是从最新的开发,从数据库设计到开发完成一套流程都是我们来做,不免中途数据库字段会发生改变,用注解后就不用担心这方面了。

       好了, 啰嗦了这么多,现在就讲一个昨天我用到的在mybatis中@Select中实现in的用法,直接贴代码(代码一),与别的写法稍有不同的就是需要用到<script>,其余的到没什么不同,再贴一个用别的xml实现的mysql中in的用法(代码三)

  代码一:

@Select("<script> " +
		"select id, resource_name as resourceName, resource_type as resourceType from t_resource_dic where dic_type = #{ditType} and resource_type " +
		"in <foreach item='item' index='index' collection='resources' open='(' separator=',' close=')'> #{item} </foreach> " +
		"</script>")
	List<ResourceDicVo> getResourceDics(@Param("resources")List<Integer> resources, @Param("ditType")Integer ditType);

 

进到@Select注解里面,知道是 Clinton Begin这个牛人写的(mybatis这个持久层框架就是他写的), 可以看到这是Apache基金会下面的项目,因为Mybatis目前已经托管到GitHub下(图一)

  代码二:

   

package org.apache.ibatis.annotations;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author Clinton Begin
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Select {
  String[] value();
}

 

 代码三:

 <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
  </foreach>

 

 图一:

   

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值