public Integer insertObjects(final Goods entity) {

// 定义sql语句
        final String sql1 = "insert into goods(name,price,cid)values(?,?,?)";

/*
         * int num = jdbcTemplate.update(sql1, new Object[] { entity.getName(),
         * entity.getPrice(), entity.getCategory() != null ?
         * entity.getCategory().getId() : null });
         */
        // 执行更新 获取自动增长id值
        // 1.max(id)获取,线程不安全

/*
         * if(num>0){ String sql2 ="select max(id) from goods";
         *
         * return jdbcTemplate.queryForInt(sql2); }else{ return 0; }
         */

// 2.select last_insert_id()
        /*
         * if(num>0){ //查询最后一次插入的id值 //connection 操作线程安全 String sql2
         * ="select last_insert_id()"; return jdbcTemplate.queryForInt(sql2);
         * }else{ return 0; }
         */

//3.第三种方法
        // 键托管对象
        KeyHolder keyHolder = new GeneratedKeyHolder();

// 3.方法
        int num = jdbcTemplate.update(new PreparedStatementCreator() {

@Override
            public PreparedStatement createPreparedStatement(Connection conn)
                    throws SQLException {
                // 执行sql语句
                PreparedStatement ps = conn.prepareStatement(sql1,
                        Statement.RETURN_GENERATED_KEYS);
                int index = 1;//1开始
                ps.setString(index++, entity.getName());
                ps.setDouble(index++, entity.getPrice());
                if (entity.getCategory() != null) {
                    ps.setObject(index++, entity.getCategory().getId());
                } else {
                    ps.setObject(index++, null);
                }
                return ps;
            }
        }, keyHolder);
        System.out.println("num==" + num);
        if (num > 0) {
            System.out.println("插入成功");
            entity.setId(keyHolder.getKey().intValue());
            return entity.getId();
        } else {
            System.out.println("插入失败");
            return 0;
        }

//4.在使用数据库操作的框架的时候,就不涉及到这种问题
    }

JavaWeb学习记录(二十四)——获取插入数据后,自动生成的id值的更多相关文章

  1. javaweb学习总结(二十四)——jsp传统标签开发

    一.标签技术的API 1.1.标签技术的API类继承关系 二.标签API简单介绍 2.1.JspTag接口 JspTag接口是所有自定义标签的父接口,它是JSP2.0中新定义的一个标记接口,没有任何属 ...

  2. javaweb学习总结二十四(servlet经常用到的对象)

    一:ServletConfig对象 1:用来封装数据初始化参数,在服务器web.xml配置文件中可以使用<init-param>标签配置初始化参数. 2:实例演示 web.xml文件中配置 ...

  3. JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能

    一.字符串拼接的工具类 package blank.util; import java.util.Iterator;import java.util.Map;import java.util.Set; ...

  4. 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用

    目录 学习笔记:CentOS7学习之二十四:expect-正则表达式-sed-cut的使用 24.1 expect实现无交互登录 24.1.1 安装和使用expect 24.2 正则表达式的使用 24 ...

  5. python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法

    python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...

  6. 设计模式学习(二十四):Spring 中使用到的设计模式

    设计模式学习(二十四):Spring 中使用到的设计模式 作者:Grey 原文地址: 博客园:设计模式学习(二十四):Spring 中使用到的设计模式 CSDN:设计模式学习(二十四):Spring ...

  7. VSTO学习笔记(十四)Excel数据透视表与PowerPivot

    原文:VSTO学习笔记(十四)Excel数据透视表与PowerPivot 近期公司内部在做一种通用查询报表,方便人力资源分析.统计数据.由于之前公司系统中有一个类似的查询使用Excel数据透视表完成的 ...

  8. mysql插入数据后返回自增ID的方法

    mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得到这个自增id的值呢? 方法一是使用la ...

  9. mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

  10. mysql函数之六:mysql插入数据后返回自增ID的方法,last_insert_id(),selectkey

    mysql插入数据后返回自增ID的方法 mysql和oracle插入的时候有一个很大的区别是,oracle支持序列做id,mysql本身有一个列可以做自增长字段,mysql在插入一条数据后,如何能获得 ...

随机推荐

  1. TDBGridEh的 搜索面板 TDBGridSearchPanel

    TCustomDBGridEh.Create FSearchPanelControl := TDBGridSearchPanelControlEh.Create(Self); //这里,创建的构造函数 ...

  2. wp8.1 Study10:APP数据存储

    一.理论 1.App的各种数据在WP哪里的? 下图很好介绍了这个问题.有InstalltionFolder, knownFolder, SD Card... 2.一个App的数据存储概览 主要分两大部 ...

  3. ACM - 概率、期望题目 小结(临时)

    概率DP求期望大多数都是全期望公式的运用.主要思考状态空间的划分以及状态事件发生的概率.问题可以分为无环和有环两类.无环一类多数比较简单,可以通过迭代或者记忆化搜索完成.有环一类略复杂,可以通过假设方 ...

  4. 2016/7/30 div位置设置,表格大小统一

    在做作业过程中遇到的一些问题和我的总结 1.作业中给出了一张背景图,并让我在背景图中一片区域写内容 我的思路是将一个div放在这片区域,那么问题就是如何定义div的位置和大小 查阅资料后发现并不复杂, ...

  5. (转)iOS消息推送机制的实现

    原:http://www.cnblogs.com/qq78292959/archive/2012/07/16/2593651.html iOS消息推送机制的实现 iOS消息推送的工作机制可以简单的用下 ...

  6. php大力力 [023节]CREATE TABLE创建新表sql写字段备注(2015-08-27)

    2015-08-27 php大力力023.CREATE TABLE创建新表sql写字段备注 http://www.cnblogs.com/dalitongxue/p/4762182.html 参考: ...

  7. JS - The react framework

    这几天因为赶时间 , 所以理解上可能有许多的误差 , 如果你不幸点进来了 , 请不要看我的代码 , 这几天我会重新修改 , 然后把错误的不足的 全部修正一下 . /hwr/src/index.js i ...

  8. 用PHP语言刷OJ题

    平常在学校都是用C,C++,Java来刷OJ题,把AC的题用不同的语言再AC一次,基本相当于翻译而已.看到学校的OJ支持提交PHP代码,于是尝试了一下. 首先,得会使用PHP,但是你如果在看这篇博客, ...

  9. MATLAB做主成分分析(PCA)

    简单的主成分分析.第一次见识PCA,我的认识是,尽量用更少的维度来描述数据,以达到理想(虽不是最好,但是''性价比''最高)的效果. %% 主成分分析降维 clear; % 参数初始化 inputfi ...

  10. PHP的循环结构

    循环结构一.while循环    while循环是先判断条件,成立则执行 使用一个while循环输出的表格 <style type="text/css"> td{ te ...