Mybatix实现in查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatix实现in查询相关的知识,希望对你有一定的参考价值。

        在这一节,我们要向大家介绍一下在Mybatis中想要实现in查询,Mapper文件应该怎么配置。

        1)在com.mybatis.dao.PartDao中增加接口函数

public List<PartInfo> getPartInfoByIDList(List<Integer> idList);
public List<PartInfo> getPartInfoByIDArray(Integer[] idArray);

        2) 在com.mybatis.dao.mapper.PartMapper中增加其实现方法

<select id="getPartInfoByIDList" parameterType="java.util.List" resultType="com.mybatis.entity.PartInfo"> 
    SELECT * FROM tbInfoPart 
    WHERE ID IN 
    <foreach collection="list" index="i" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>    
</select>

<select id="getPartInfoByIDArray" parameterType="java.lang.reflect.Array" resultType="com.mybatis.entity.PartInfo"> 
    SELECT * FROM tbInfoPart 
    WHERE ID IN 
    <foreach collection="array" index="i" item="id" open="(" separator="," close=")">
        #{id}
    </foreach>    
</select>

 

       foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合:

            collecton:要循环的集合,可以是一个List、可以是一个数组

            index:循环的索引

            item:循环过程中每一个元素的别名

            open:整个循环开始之前要增加的字符串

            separator:循环之间夹杂的字符串

            close:整个循环结束之后要增加的字符串

        3)测试下效果

public static List<PartInfo> selectPartByIDList(List<int> idList){
    InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
    SqlSession session = sessionFactory.openSession();
    String statement = "com.mybatis.dao.PartDao.getPartInfoIDList";
    List<PartInfo> partInfos = session.selectList(statement, idList);
    session.close();
    return partInfos;
}

public static List<PartInfo> selectPartByIDArray(Integer[] idArray){
    InputStream iStream = TestMain.class.getClassLoader().getResourceAsStream("mybatis.xml");
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(iStream);
    SqlSession session = sessionFactory.openSession();
    String statement = "com.mybatis.dao.PartDao.getPartInfoIDArray";
    List<PartInfo> partInfos = session.selectList(statement, idArray);
    session.close();
    return partInfos;
}

     

public static void main(String[] args) {
    List<Integer> idList = new ArrayList<Integer>();
    idList.add(1);
    idList.add(2);
    idList.add(3);

    Integer[] idArray = {1,2,3};

    List<PartInfo> partInfos; 

    partInfos = selectPartByIDList(idList);
    for (PartInfo partInfo : partInfos) {
        System.out.println("ID:"+partInfo.getId()+" 商品:["+
                            partInfo.getPartCode()+"] "+
                            partInfo.getPartName()+" ,售价:"+
                            partInfo.getSalePrice()+"元/"+
                            partInfo.getUnit()); 

    partInfos = selectPartByIDArray(idArray );
    for (PartInfo partInfo : partInfos) {
        System.out.println("ID:"+partInfo.getId()+" 商品:["+
                            partInfo.getPartCode()+"] "+
                            partInfo.getPartName()+" ,售价:"+
                            partInfo.getSalePrice()+"元/"+
                            partInfo.getUnit()); 
}

        执行后的打印结果为:

ID:1 商品:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
ID:3 商品:[001-0003] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:1699.0元/台
ID:1 商品:[001-0001] TCL D32E161 32英寸 内置wifi 在线影视 窄边LED网络液晶电视 ,售价:1099.9元/台
ID:2 商品:[001-0002] TCL D50A710 50英寸 40万小时视频 全高清 内置WiFi 八核安卓智能LED液晶电视 ,售价:2799.0元/台
ID:3 商品:[001-0003] 康佳(KONKA) LED42E330CE 42英寸 全高清液晶电视 ,售价:1699.0元/台

        可以看到商品信息已经被我们查询到了。

    4.目录结构

技术分享

 

以上是关于Mybatix实现in查询的主要内容,如果未能解决你的问题,请参考以下文章

具有相同功能的活动和片段

一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

imgwarp.cpp:3143: error: (-215:Assertion failed) _src.total() > 0 in function ‘warpPerspective‘(代码片段

NDK: ant 错误 [javah] Exception in thread "main" java.lang.NullPointerException 多种解决办法(代码片段

SpringBoot启动报错“Consider defining a bean of type ‘xxx.mapper.UserMapper‘ in your configuration.“(代码片段