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

时间: 2024-10-06 04:06:34

mybatis的mapper映射文件中where,if,foreach等的使用的相关文章

Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复:如果没有配 置 namespace,那么 id 不能重复: 原因就是 namespace+id 是作为 Map<String, MapperStatement>的 key 使用的,如果没有 namespace,就剩下 id,那么,id 重复会导致数据互相覆盖. 有了 namespace,自然 id 就可以重复,namespace 不同,namespace+id 自然 也就不同. 原文地址:https://www.c

传参在mybatis的sql映射文件中正确获取

1.单个参数: 非自定义对象 传参:getStuById(Integer id): 取值:#{id} 单个基本类型参数,随便取值都行:#{ok} 对象: 传参:saveStudent(Student student) 取值:#{属性名} 2.多个参数: 传参:getStudentByLastNameAndAge(String lastName,Integer age) 取值:#{参数名}不好使:报错提示可用的参数是[0,1,param1,param2] 可用的取值方式: 1)#{参数索引} #{

mybatis(mapper映射文件)

<!-- parameterType:参数类型,可以省略, 获取自增主键的值: mysql支持自增主键,自增主键值的获取,mybatis也是利用statement.getGenreatedKeys(): useGeneratedKeys="true":使用自增主键获取主键值策略 keyProperty:指定对应的主键属性,也就是mybatis获取到主键值以后,将这个值封装给javaBean的哪个属性 --> <insert id="addEmp"

Mybatis学习系列(二)Mapper映射文件

Mapper映射文件,作用是用来配置SQL映射语句,根据不同的SQL语句性质,使用不同的标签,mapper文件中常用的标签有<iselect>.<insert>.<update>.<delete> 常见增删改查示例 <!-- namespace:此处使用包名+文件名 的形式 --> <mapper namespace="com.sl.mapper.ProductMapper"> <!--select – 映射

mybatis的sql使用(mapper映射文件的配置)

一.mapper代理开发的原则 要求mapper映射文件中的namespace属性值,必须是mapper代理接口的全限定名称 要求mapper映射文件中,sql语句标签的声明,与mapper接口方法的声明一致(方法用同一个名字) 要求sql语句的resultType属性指定的类型(如果返回值是一个集合,resultType指定的是集合中存放的类型),与mapper接口方法的返回值类型一致 要求sql语句的id属性值,与mapper接口的方法名称一致 要求sql语句的parameterType属性

深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete[转]

上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介绍mapper映射文件的配置, 这是mybatis的核心之一,一定要学好.在mapper文件中,以mapper作为根节点,其下面可以配置的元素节点有: select, insert, update, delete, cache, cache-ref, resultMap, sql . 本篇文章将简单介绍 in

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap[转]

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap good

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的

深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap

上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select.resultMap的用法.select无疑是我们最常用,也是最复杂的,mybatis通过resultMap能帮助我们很好地进行高级映射.下面就开始看看select 以及 resultMap的用法: 先看select的配置吧: <select <!-- 1. id (必须配置) id是命名空间中的