使用myBatis复制行

时间:2018-03-26 11:10:37

标签: mybatis

我尝试使用此语句复制Oracle和myBatis的行:

<?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 
...
<insert id="copy"  >
  INSERT INTO ${table}
    <foreach item="key" collection="keys" index="index" open="(" separator="," close=")">
        ${key}
    </foreach>
    VALUES
    <foreach item="key" collection="map" index="index" open="(" separator="," close=")">
        ${key}
    </foreach>
</insert>  

</mapper>

-

                    for ( Map.Entry<Object, Object> entry2 : map.entrySet()) {                          

                        String key2 = (String) entry2.getKey();
                        Object value = null;

                        if (entry2.getValue() == null)
                            value = "NULL";
                        else if (entry2.getValue() instanceof java.sql.Timestamp)
                        {
                            //...
                        }
                        else if (entry2.getValue() instanceof Integer ||  entry2.getValue() instanceof Long ||
                                entry2.getValue() instanceof Short ||  entry2.getValue() instanceof java.math.BigDecimal 
                                ){
                            value =  entry2.getValue();

                        }
                        else if (entry2.getValue().getClass().getName().equals("oracle.sql.CLOB"))
                        {
                            Clob clob=(Clob)entry2.getValue();
                            value= (String)clob.getSubString((long)1, (int)clob.length());
                        }
                        else{
                            value = "'" + entry2.getValue() + "'";
                        }
                        map.put(key2, value);
                        columans_valores.add("'" + key2 + "'");
                    }


                    copyService(map, map.keySet(), "table");

-

它适用于大多数类型,但CLOB和BLOB会复制其地址,或者缩小到4000字节,具体取决于我用来复制它们的代码,我该如何处理它们?

1 个答案:

答案 0 :(得分:0)

最后得到了一些调整:

  • 要通知myBatis使用的类型,请为#
  • 切换$
  • 避免引用
  • 要在插入空值时防止Oracle错误,请将其从地图中删除而不是 试图插入空值
相关问题