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]
6 个解决方案
#1
<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>
#2
我用的是MYSQL,使用SELECT @@IDENTITY AS ID
每次查到的都是0
#3
字段未自增长
#4
恩,是的,每次都是0
#5
既然是自增字段,为什么要获得呢?
只有数据保存后,才能通过查询对象获得
如果没有自增的数字主键,ibatis 如何处理:
ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
只有数据保存后,才能通过查询对象获得
如果没有自增的数字主键,ibatis 如何处理:
ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
#6
谢谢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>
现在操作都成功了,多谢哈
#1
<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>
#2
我用的是MYSQL,使用SELECT @@IDENTITY AS ID
每次查到的都是0
#3
字段未自增长
#4
恩,是的,每次都是0
#5
既然是自增字段,为什么要获得呢?
只有数据保存后,才能通过查询对象获得
如果没有自增的数字主键,ibatis 如何处理:
ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
只有数据保存后,才能通过查询对象获得
如果没有自增的数字主键,ibatis 如何处理:
ibatis不会负责帮你生成主键,需要你自己指定,ibatis 只负责数据的处理,不负责数据的生成
#6
谢谢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>
现在操作都成功了,多谢哈