论坛首页 入门技术论坛

主键生成问题

浏览 10014 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-07-25  
也是刚接触Ibatis,但看了很多例子,都是把主键设成了int型并且自动增长的.这样在Ibatis中相当于不用管主键这个字段了,数据会自动插入.

但我想说的是,如果主键是字符型的怎么办呢,我知道Hibernate中可以通过好几种方式实现的呀.
在Ibatis中应该怎么做呢
   发表时间:2007-07-26  
u can use <selectKey> section

Cloudscape  VALUES IDENTITY_VAL_LOCAL()
DB2         VALUES IDENTITY_VAL_LOCAL()
Derby       VALUES IDENTITY_VAL_LOCAL()
HSQLDB      CALL IDENTITY()
MySql       SELECT LAST_INSERT_ID()
SqlServer   SELECT SCOPE_IDENTITY()
SYBASE      SELECT @@IDENTITY
ORACLE      SELECT CUSTOM_SQL.NEXTVAL AS ID FROM DUAL
0 请登录后投票
   发表时间:2007-07-27  
我是这么写的,写完了之后,就插入第一条时没错,然后就插不进去了.
<insert id="saveUser" parameterClass="User">
<selectKey resultClass="string" keyProperty="cid">
select last_insert_id() as cid from test limit 1
</selectKey>
insert into test
(username, password)
values
(#userName#, #password#)
</insert>

报错:有重复的主键
0 请登录后投票
   发表时间:2007-07-27  
你主键是#username#么?如果是,<select key ... keyproperty=username>才对阿。
0 请登录后投票
   发表时间:2007-07-27  
select last_insert_id() from table;
只能查询到数值型字段,如果是字符型返回全为0。
0 请登录后投票
   发表时间:2007-07-27  
对呀.你们是不是没有看明白我说的问题呀.

我就想问,如果主键是字符型的插入数据时该怎么处理
0 请登录后投票
   发表时间:2007-07-27  
我想知道你的这个key的值是怎么来的
0 请登录后投票
   发表时间:2007-07-27  
就是直接把主键设成是字符型的,

像平时,很多表的主键不都是整型吗.然后设成自动增长.

而我的这个就设成了字符型,并且用做主键,也就是必须唯一
0 请登录后投票
   发表时间:2007-07-27  
你以username做主键就没必使用自增长直接输入用户名就可以了,如果要用自增长就没必要使整形。关键是你这个主键是用来做什么的?
0 请登录后投票
   发表时间:2007-07-27  
@_@

看仔细一些  没问你他是干嘛的  只是问你他是怎么来的   你都说了数字的是自增长的  那你这个呢  里面是str  是些什么str  这些str怎么来的
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics