mybatis自增主键的问题
来源:互联网 发布:erwin数据建模 pdf 编辑:程序博客网 时间:2024/06/10 03:12
mybatis自增主键有个有意思的地方.在进行插入数据库操作时,新建一个不显式设定id的对象(对于int类型,此时id默认为0),然后执行save操作.该操作在将对象中属性存储在数据库表的同时,设定了该对象的id值,为mybatis自增的数值.而且,即使在新建对象的时候,显式设定了id的值,如new User(1,"tom"),在进行insert操作之后,该对象的id值也自动变为了mybatis自增的id值.这是mybatis内部的机制,不亲自试一下觉得这么轻易地就改变了对象的id值多多少少有些不可思议.
看代码:
1
CREATE TABLE user (
2
user_id
int
(
10
) unsigned NOT NULL auto_increment,
3
email_id varchar(
45
) NOT NULL,
4
password varchar(
45
) NOT NULL,
5
first_name varchar(
45
) NOT NULL,
6
last_name varchar(
45
)
default
NULL,
7
PRIMARY KEY (user_id),
8
UNIQUE KEY Index_2_email_uniq (email_id)
9
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
01
package
com.sivalabs.mybatisdemo.domain;
02
public
class
User
03
{
04
private
Integer userId;
05
private
String emailId;
06
private
String password;
07
private
String firstName;
08
private
String lastName;
09
10
@Override
11
public
String toString() {
12
return
'User [userId='
+ userId +
', emailId='
+ emailId
13
+
', password='
+ password +
', firstName='
+ firstName
14
+
', lastName='
+ lastName +
']'
;
15
}
16
//setters and getters
17
}
01
package
com.sivalabs.mybatisdemo.mappers;
02
03
import
java.util.List;
04
import
com.sivalabs.mybatisdemo.domain.User;
05
06
public
interface
UserMapper
07
{
08
09
public
void
insertUser(User user);
10
11
public
User getUserById(Integer userId);
12
13
public
List<User> getAllUsers();
14
15
public
void
updateUser(User user);
16
17
public
void
deleteUser(Integer userId);
18
19
}
30
<
insert
id
=
'insertUser'
parameterType
=
'User'
useGeneratedKeys
=
'true'
keyProperty
=
'userId'
>
31
INSERT INTO USER(email_id, password, first_name, last_name)
32
VALUES(#{emailId}, #{password}, #{firstName}, #{lastName})
33
</
insert
>
49
@Test
50
public
void
testInsertUser()
51
{
52
User user =
new
User();
53
user.setEmailId(
'test_email_'
+System.currentTimeMillis()+
'@gmail.com'
);
54
user.setPassword(
'secret'
);
55
user.setFirstName(
'TestFirstName'
);
56
user.setLastName(
'TestLastName'
);
57
58
userService.insertUser(user);
59
Assert.assertTrue(user.getUserId() !=
0
);
60
User createdUser = userService.getUserById(user.getUserId());
61
Assert.assertNotNull(createdUser);
62
Assert.assertEquals(user.getEmailId(), createdUser.getEmailId());
63
Assert.assertEquals(user.getPassword(), createdUser.getPassword());
64
Assert.assertEquals(user.getFirstName(), createdUser.getFirstName());
65
Assert.assertEquals(user.getLastName(), createdUser.getLastName());
66
67
}
0 0
- mybatis自增主键的问题
- mybatis批量插入,主键自增问题
- mybatis获取自增主键的值
- mybatis自增主键配置
- mybatis 自增主键配置
- mybatis自增主键配置
- mybatis 自增主键配置
- mybatis 自增主键配置
- mybatis自增主键配置
- mybatis自增主键配置
- mybatis获取自增主键
- mybatis自增主键无效
- mybatis+oracle主键自增
- mybatis设置自增主键
- mybatis 自增主键配置
- mybatis 自增主键配置
- mybatis mysql 主键自增
- mybatis 自增主键配置
- 模板引擎介绍
- boost::shared_ptr使用技巧
- String to Integer (atoi)
- SEO的核心:我们是在为用户做优化
- 杭电1874————单源最短路径(dijkstra)
- mybatis自增主键的问题
- 用Python和Pygame写游戏-从入门到精通(3)
- linux查找文件命令find
- Deep Learning:Contrastive Divergence的提出
- 黑马程序员--------多线程
- 如何判断点在三角型内
- 基于Flume的美团日志收集系统(一)架构和设计
- SpringMVC学习(二)--ModelAndView对象
- 做一名合格的生意人