CREATE TABLE `user` ( `id` varchar(30) NOT NULL COMMENT '用户 openid', `session_key` varchar(30) DEFAULT NULL COMMENT '用户 session_key', `nickname` varchar(20) DEFAULT NULL COMMENT '用户昵称', `role` int(2) DEFAULT NULL COMMENT '角色类型 0是管理员,1是用户,2是员工', `phone_number` varchar(20) DEFAULT NULL COMMENT '用户手机号', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `phone_UNIQUE` (`phone_number`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';和CREATE TABLE `user_account` ( `id` int(10) NOT NULL AUTO_INCREMENT, `user_id` varchar(30) CHARACTER SET utf8mb4 NOT NULL COMMENT '用户id', `password` varchar(50) COLLATE utf8mb4_bin NOT NULL COMMENT '用户密码', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), KEY `user_id_idx` (`user_id`), CONSTRAINT `user_id_idx` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;,用mybatis的注解插入数据
时间: 2023-08-12 13:45:17 浏览: 80
可以使用@Insert注解来插入数据,如下所示:
```
@Insert("INSERT INTO user (id, session_key, nickname, role, phone_number, create_time, update_time) VALUES (#{id}, #{sessionKey}, #{nickname}, #{role}, #{phoneNumber}, #{createTime}, #{updateTime})")
void insertUser(User user);
@Insert("INSERT INTO user_account (user_id, password, create_time, update_time) VALUES (#{userId}, #{password}, #{createTime}, #{updateTime})")
void insertUserAccount(UserAccount userAccount);
```
其中,User和UserAccount为对应的实体类,#{xxx}为占位符,对应实体类的属性。
相关问题
CREATE TABLE user ( id varchar(30) NOT NULL COMMENT '用户 openid', session_key varchar(30) DEFAULT NULL COMMENT '用户 session_key', nickname varchar(20) DEFAULT NULL COMMENT '用户昵称', role int(2) DEFAULT NULL COMMENT '角色类型 0是管理员,1是用户,2是员工', phone_number varchar(20) DEFAULT NULL COMMENT '用户手机号', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), UNIQUE KEY phone_UNIQUE (phone_number) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';和CREATE TABLE user_account ( id int(10) NOT NULL AUTO_INCREMENT, user_id varchar(30) CHARACTER SET utf8mb4 NOT NULL COMMENT '用户id', password varchar(50) COLLATE utf8mb4_bin NOT NULL COMMENT '用户密码', create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (id), KEY user_id_idx (user_id), CONSTRAINT user_id_idx FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;,用mybatis的注解插入数据(用一个语句进行两张表的插入)
可以使用MyBatis的多参数注解@Param来实现一条语句插入两张表的操作,示例代码如下:
```
@Insert("INSERT INTO user (id, session_key, nickname, role, phone_number, create_time, update_time) VALUES (#{user.id}, #{user.sessionKey}, #{user.nickname}, #{user.role}, #{user.phoneNumber}, #{user.createTime}, #{user.updateTime}); " +
"INSERT INTO user_account (user_id, password, create_time, update_time) VALUES (#{userAccount.userId}, #{userAccount.password}, #{userAccount.createTime}, #{userAccount.updateTime})")
void insertUserAndAccount(@Param("user") User user, @Param("userAccount") UserAccount userAccount);
```
其中,@Param("xxx")表示给参数取别名,对应多参数方法中的参数名。需要注意的是,两个INSERT语句之间需要使用分号隔开。
阅读全文