ibatis 如何生成自增主键

小瑞 2009-11-20 02:26:15
我刚学ibatis

xml中配置为

<select id="login" parameterClass="User" resultMap="user">
SELECT * FROM users where userName=#userName# and password=#password#
</select>

<insert id="register" parameterClass="User">

insert into users(uid,userName,password,userType) values
(#uid# ,#userName# ,#password#,#userType#);
</insert>



JAVA代码中如下配置

User user = new User();
// user.setUid(10);
user.setUserName(userName);
user.setPassword(password);
user.setUserType("1");
boolean bool = SpringUtil.getBeans().getUserDao().insert(user);


现在是可以进行插入的,但是表的主键是我在这里设置的user.setUid(10);,


[size=12px][/如果数据库表的主键是自增的数字主键如何处理????

如果没有自增的数字主键,ibatis 如何处理??????
size]
...全文
1032 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小瑞 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lvbang_lzt 的回复:]
Java code<insert id="insertUser" parameterClass="User">

insert into t_user values (null,#username#,#password#,#,#userType#

)//如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置//如果不通过<selectKey>标签来设置,则返回值为空!<?-
[/Quote]


谢谢2楼,
我把数据库表修改为主键自增

DROP TABLE IF EXISTS `store`.`users`;
CREATE TABLE `store`.`users` (
`uid` int auto_increment primary key ,
`userName` varchar(20) NOT NULL,
`password` varchar(32) NOT NULL,
`userType` varchar(20) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


然后配置修改为

<insert id="insertProduct-MYSQL" parameterClass="User">
insert into users values(null,#userName# ,#password#,#userType#);
<selectKey resultClass="int" keyProperty="uid">
SELECT @@IDENTITY AS UID
</selectKey>
</insert>

现在操作都成功了,多谢哈
道光2008 2009-11-20
  • 打赏
  • 举报
回复
既然是自增字段,为什么要获得呢?
只有数据保存后,才能通过查询对象获得


如果没有自增的数字主键,ibatis 如何处理:
ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
小瑞 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yanghao0 的回复:]
字段未自增长
[/Quote]


恩,是的,每次都是0
yanghao0 2009-11-20
  • 打赏
  • 举报
回复
字段未自增长
小瑞 2009-11-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lvbang_lzt 的回复:]
Java code<insert id="insertUser" parameterClass="User">

insert into t_user values (null,#username#,#password#,#,#userType#

)//如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置//如果不通过<selectKey>标签来设置,则返回值为空!<?-
[/Quote]


我用的是MYSQL,使用SELECT @@IDENTITY AS ID
每次查到的都是0
lzh_me 2009-11-20
  • 打赏
  • 举报
回复

<insert id="insertUser" parameterClass="User">

insert into t_user values (

null,#username#,#password#,#,#userType#

)
//如果主键是自动生成的,则其返回值可以通过<selectKey>标签来设置

//如果不通过<selectKey>标签来设置,则返回值为空!
<selectKey resultClass="int" keyProperty="id">

SELECT @@IDENTITY AS ID

</selectKey>

</insert>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧