• mybatis的mapper映射文件中where,if,foreach等的使用


    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <!-- namespace:命名空间,用于隔离sql,还有一个很重要的作用,后面会讲 -->
    <mapper namespace="com.it.mapper.UserMapper">
        <sql id="selectUser">
            SELECT * FROM `user`
        </sql>
        
        <!-- 根据多个ID查用户信息 -->
        <select id="selectUsersByIds" parameterType="com.it.entity.QueryVo" resultType="com.it.entity.User">
            <include refid="selectUser"/>
            <where>
                <foreach collection="idsList" item="id" separator="," open="id in (" close=")">
                    #{id}
                </foreach>
            </where>
        </select>
    </mapper>

    UserMapper的映射文件

    package com.it.mapper;
    
    import java.util.List;
    
    import com.it.entity.QueryVo;
    import com.it.entity.User;
    
    public interface UserMapper {
    
        
        public User queryUserById(Integer id);
        
        public List<User> findUserByQueryVo(QueryVo vo);
        
        //根据多个id查询用户信息
        public List<User> selectUsersByIds(QueryVo vo);
    }

    Usermapper接口

    package com.it.test;
    
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.it.entity.QueryVo;
    import com.it.entity.User;
    import com.it.mapper.UserMapper;
    
    public class MapperTest {
        
        @Test
        public void  testfindUsersByIds() throws Exception{
            //加载配置文件
            String resource = "SqlMapConfig.xml";
            InputStream in = Resources.getResourceAsStream(resource);
            //创建sessionFactory
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
            //创建sqlSession
            SqlSession sqlSession = sessionFactory.openSession();
            
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            
            List<Integer> ids = new ArrayList<Integer>();
            ids.add(10);
            ids.add(16);
            ids.add(22);
            QueryVo vo = new QueryVo();
            vo.setIdsList(ids);
            List<User> users = userMapper.selectUsersByIds(vo);
            for (User user : users) {
                System.out.println(user);
            }
        }
    }

    测试方法testfindUsersByIds

  • 相关阅读:
    Oracle手工建库
    php如何在某个时间上加一天?一小时? 时间加减
    JavaScript:this是什么?
    ping广播地址会如何(转)
    用CSS3实现文字描边
    vue二十七:vue基础之过滤器
    vue二十六:vue基础之vue生命周期
    vue二十五:vue基础之单个元素过渡和多个元素过渡
    vue二十五:vue基础之slot插槽和具名插槽
    vue二十四:vue基础之动态组件
  • 原文地址:https://www.cnblogs.com/optimistic-/p/7078543.html
Copyright © 2020-2023  润新知