在mybatis中如何将Map作为参数

来自:网络
时间:2024-06-09
阅读:

在mybatis中将Map作为参数

在接口中声明方法并把参数设为Map集合

package com.dao;
 
import com.pojo.User;
import org.apache.ibatis.annotations.Param;
 
import java.util.List;
import java.util.Map;
 
public interface UserMapper {
   
    int addUser11(Map<String,Object> map);
}

在实现类中给Map赋值

package com.dao;
 
import com.pojo.User;
import com.uitl.BaseDaoUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
 
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
public class UserMapperTest {
    
    @Test
    public void addUser11(){
        SqlSession sqlSession = BaseDaoUtil.openSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        Map<String,Object> map = new HashMap<>();
        map.put("id",9);
        map.put("userName","阿峰");
        map.put("pwd","1231321");
        int i = mapper.addUser11(map);
        if (i ==0 ){
            System.out.println("失败");
        }else {
            System.out.println("添加成功");
        }
        sqlSession.close();
    }
}
 

三,在映射的 SQL 语句文件中编写相应的SQL语句

<?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">
<mapper namespace="com.dao.UserMapper">
    <insert id="addUser11" parameterType="map">
        insert into user (id,userName,pad ) values (#{id},#{userName},#{pwd});
    </insert>
</mapper>

其中 parameterType 应为map 因为是mybatis自动生成好的别名

mybatis遇到多个参数时,使用map

我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!

    //万能的Map
    int addUser2(Map<String,Object> map);

mapper.xml

  <!--对象中的属性,可以直接取出来    传递map的key-->
    <insert id="addUser" parameterType="map">
        insert into mybatis.user (id, pwd) values (#{userid},#{passWord});
    </insert>

Test

    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        Map<String, Object> map = new HashMap<String, Object>();

        map.put("userid",5);
        map.put("passWord","2222333");

        mapper.addUser2(map);

        sqlSession.close();
    }

注意:

  • Map传递参数,直接在sql中取出key即可! 【parameterType=“map”】
  • 对象传递参数,直接在sql中取对象的属性即可!【parameterType=“Object”】

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

返回顶部
顶部