spring-得到主键自动增长值KeyHolder

问题描述

得到主键自动增长值KeyHolder

为什么我的代码执行后KeyHolder的值还是为空呢?
`public class UserDaoImpl implements IUserDao {
private NamedParameterJdbcTemplate simpleJdbcTemplate = new NamedParameterJdbcTemplate (JDBCUtils4.getDataSource());
@Override
public boolean addUser(RegistForm registForm) throws Exception {
//使用命名参数来给"?"占位符命名
String sql = "insert into user(username,birthday,major,score) values(:username,:birthday,:major,:score)";
//给各个占位符赋值
SqlParameterSource param = new BeanPropertySqlParameterSource(registForm);
//执行更新操作
KeyHolder keyHoder = new GeneratedKeyHolder();
int count = this.simpleJdbcTemplate.update(sql, param, keyHoder);

            System.out.println("-------------------------------"+keyHoder+"----------------------");
            int id = keyHoder.getKey().intValue();

            registForm.setId(id);
            if(count>0)
                return true;
            else
                return false;
        }
}

`

时间: 2024-09-20 00:00:16

spring-得到主键自动增长值KeyHolder的相关文章

sql语句查询数据库中的表名/列名/主键/自动增长值实例_MsSql

sql语句查询数据库中的表名/列名/主键/自动增长值 ----查询数据库中用户创建的表 ----jsj01 为数据库名 select name tablename from jsj01..sysobjects where type='U' and name not in ('dtproperties') --查询表里的字段信息 ---docs为表名 ---- select * from syscolumns where id = object_id('docs') ----查询数据库中所有类型

sql语句查询数据库中的表名/列名/主键/自动增长值

----查询数据库中用户创建的表 ----jsj01 为数据库名 select name tablename from jsj01..sysobjects where type='U' and name not in ('dtproperties') --查询表里的字段信息 exec sp_help  对象名 ---docs为表名 ---- select * from syscolumns where id = object_id('docs') ----查询数据库中所有类型 ----selec

ado.net-c#通过SqlDataAdapter获取数据库数据,主键自增长值与datatable内对应字段值不同

问题描述 c#通过SqlDataAdapter获取数据库数据,主键自增长值与datatable内对应字段值不同 当删除表内最后一条数据后,通过SqlDataAdapter增加一条数据.表主键ID的值比SqlDataAdapter操作的datatable内ID多1. 问题关键是,当我要删除一行记录时,datatable的ID也就不能当做条件来用了,他的值不一定是正确的. 解决方案 参考:http://blog.csdn.net/pfe_Nova/article/details/41378819 解

在Mysql,SqlServer及Oracle中设置主键自动增长

1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key not null, name varchar(15)); insert into customers(name) values("name1"),("name2"); select id from customers;

深入Mysql,SqlServer,Oracle主键自动增长的设置详解_Mysql

1.把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: 复制代码 代码如下: create table customers(id int auto_increment primary key not null, name varchar(15));insert into customers(name) values("name1"),("name2");select id fr

hibernate annotation 怎么申明主键自动增长?sqlserver数据库

问题描述 如题 解决方案 解决方案二:<idname="id"type="long"><columnname="id"></column><generatorclass="increment"></generator></id>解决方案三:如果是采用注释方式呢?怎么注释?解决方案四:pirvateLongid;@Id@GeneratedValue(stra

如何使Oracle触发器主键自动增长

1,创建sequence: create sequence SEQ_SM_USER minvalue 1 maxvalue 999999999999999999999999999 start with 1 increment by 1 cache 20; 2,创建触发器: create or replace trigger tg_sm_user before insert on sm_user referencing old as oldval new as newval for each ro

mysql把主键定义为自动增长标识符类型_Mysql

1.把主键定义为自动增长标识符类型 在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值.例如: create table customers(id int auto_increment primary key notnull, name varchar(15)); insert into customers(name) values("name1"),("name2"); 一旦把id设为auto_increment类型,my

SQL Server表的主键设计应注意的问题

关于数据库的逻辑设计,是一个很广泛的问题.本文主要针对开发应用中遇到在MS SQL Server上进行表设计时,对表的主键设计应注意的问题以及相应的解决办法. 主键设计现状和问题 关于数据库表的主键设计,一般而言,是根据业务需求情况,以业务逻辑为基础,形成主键. 比如,销售时要记录销售情况,一般需要两个表,一个是销售单的概要描述,记录诸如销售单号.总金额一类的情况,另外一个表记录每种商品的数量和金额.对于第一个表(主表),通常我们以单据号为主键;对于商品销售的明细表(从表),我们就需要将主表的单