Mysql向数据表插入一条数据返回自增主键的ID值

原创
2017/03/28 22:23
阅读数 31

方法一:

     <!--  statementType="STATEMENT" 指定采用非预编译的方式

             table_name:动态传入的数据表的名字

             itemId: 生成的自增主键(名字可以任意)

       -->

      <insert id="insertWithId" parameterType="java.util.Map" statementType="STATEMENT" 
          useGeneratedKeys="true" keyProperty="itemId">

       insert into ${table_name}
        <foreach collection="keys" item="k" index="index" open="(" separator="," close=")">
            ${k}
        </foreach>
        values
        <foreach collection="keys" item="k" index="index" open="(" separator="," close=")">
            '${params[k]}'
        </foreach>
    </insert>

方法二:

<insert id="insertWithId" parameterType="java.util.Map" statementType="STATEMENT">

<!--         Oracle数据库中插入数据返回自增的Id值 -->
<!--         <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="itemId"> -->
<!--             SELECT LOGS_SEQ.nextval AS ID FROM DUAL -->
<!--         </selectKey> -->
        <!-- MySql数据库插入一条数据放回自增的Id值 -->    
         <selectKey keyProperty="itemId" resultType="java.lang.Integer" order="AFTER"> -->
            SELECT LAST_INSERT_ID() FROM DUAL 
         </selectKey>
        insert into ${table_name}
        <foreach collection="keys" item="k" index="index" open="(" separator="," close=")">
            ${k}
        </foreach>
        values
        <foreach collection="keys" item="k" index="index" open="(" separator="," close=")">
            '${params[k]}'
        </foreach>
    </insert>

 

 

Mapper接口:

public interface CommenMapper {
    public Integer insertWithId(Map<String, Object> params);

}

测试代码:

    @Test
    public void testInsertWithId(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        CommenMapper commenMapper = sqlSession.getMapper(CommenMapper.class);
        Map<String, Object> save_map = new HashMap<>();
        
        Map<String, Object> param = new HashMap<>();
        param.put("name", "hehehhe");
        param.put("price", 23.3f);
        param.put("detail", "xijiejuedingchengbai");
        
        String[] keys = new String[param.size()];
        Set<String> sset = param.keySet();
        int i = 0;
        for (String os : sset) {
            keys[i++] = os;
        }
        save_map.put("table_name", "items");
        save_map.put("keys", keys);
        save_map.put("params", param);
        commenMapper.insertWithId(save_map);
        sqlSession.commit();
        Integer itemId = (Integer) save_map.get("itemId");
        System.out.println("itemId ===" + itemId);
    }


 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部