• 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.目录结构

    笔者只是初学者,开此博客的初衷是为了给自己的学习过程留一个痕迹。所以您可能发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!欢迎加QQ群讨论:852410026
  • 相关阅读:
    选项菜单-OptionMenu
    Android Studio教程
    android 使用layer-list
    JavaScript OOP 学习总结
    Android应用中网络请求库Volley的使用
    Android应用中网络请求库Volley的介绍
    Android UI: LinearLayout中layout_weight 属性的使用规则
    Robot Framework 培训
    Begin :SWIFT 基本语法
    树莓派raspberrypi系统安装docker以及编译nginx和php镜像
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/5183094.html
Copyright © 2020-2023  润新知