如何在使用批注的同时使用mybatis中的哈希映射将值插入一行?

时间:2019-09-24 13:05:36

标签: java mybatis spring-mybatis

如果我有类似的对象,我可以使用MyBatis插入db

public class Student {
   private int id;
   private String name;
}
..
@Insert("INSERT INTO STUDENT (ID,NAME) VALUES (#{id}, #{name})")
@Options(useGeneratedKeys = true, keyProperty = "id")
void insert(Student student);

但是如果我的哈希表的值为as,如何使用mybatis

studentDetailsMap = [{id,10},{name,"smith"}] //represented as key value pairs for understanding

我所拥有的是具有很多列的大表,并且mybatis可以将其数据用作每行的哈希图。这样的情况太多了,所以我不想创建很多pojo类,这就是为什么我试图找到一种直接从hashmap插入mybatis的方法的原因。

1 个答案:

答案 0 :(得分:0)

  1. 在映射器XML中创建映射器元素:

    <insert id="fnInsert"> insert into ${tablename} <trim> <trim prefix="(" suffix=")" suffixOverrides=","> <foreach collection="mapdata" item="element" index="index" separator=",">${index}</foreach>
    </trim> select <foreach collection="mapdata" item="element" index="index" separator=","> <trim> #{element} </trim> </foreach> from dual </trim> </insert>


  1. 在界面中创建相应的功能。

public int insertMICTables(@Param("tablename") String tablename, @Param("mapdata") Map<String, String> mapdata);

  1. 准备输入参数:

    Map<String, String> mapdata = new HashMap<String, String>();
    mapdata.put("columna", "id01");
    mapdata.put("columnb", "Hello manager");
    this._epMapper.insertMICTables("tablename", mapdata) ;
    
相关问题