一、前言
使用MyBatis进行插入操作的时候,如果表的主键是自增的,针对不同的数据库相应的操作也不同。我们在实际开发中无非是两种情况比较多,一种是Oracle sequence,另外一种就是MySQL自增主键。本文主要应用于MySQL数据库,针对返回自增主键和不返回自增主键两种情况通过案例说明。
二、案例
♦搭建工程MyBatisMySQLIDDemo,具体搭建步骤可以参考
♦新建一张数据库表t_user
CREATE TABLE `t_user` (
`id` int(50) NOT NULL AUTO_INCREMENT,
`loginId` varchar(20) DEFAULT NULL,
`userName` varchar(100) DEFAULT NULL,
`role` varchar(255) DEFAULT NULL,
`note` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
♦修改UserMapper接口类,增加addUser方法
/*** 新增用户* @param user* @return*/
public void addUser(User user);
♦针对不返回自增主键的情况
修改UserMapper.xml文件
insert into
t_user(loginId,userName,role,note)
values(#{loginId},#{userName},#{role},#{note})
测试类MyBatisTest,增加testAddNoReturnID方法
@Test
public void testAddNoReturnID() throws IOException {
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
try{
UserMapper mapper = openSession.getMapper(UserMapper.class);
User user = new User("queen","奎恩","海贼王副把手","专门负责提鞋的。。。");
mapper.addUser(user);
System.out.println("***************"+user.getId()+"***************");
openSession.commit();
}finally{
openSession.close();
}
}
运行测试,控制台打印
2017-07-31 21:00:13,811 [main] [org.apache.ibatis.transaction.jdbc.JdbcTransaction]-[DEBUG] Setting autocommit to false on JDBC Connection [com.mysql.j