public interface UserMapper extends BaseMapper<User>使用时使用user_openid表
时间: 2024-05-14 22:16:35 浏览: 195
如果您想在使用UserMapper时操作user_openid表,您需要在UserMapper接口中定义一个新的方法或覆盖BaseMapper中的方法,并使用@TableName注解来指定操作的表名为"user_openid",例如:
```
@TableName("user_openid")
public interface UserOpenidMapper extends BaseMapper<User> {
// define new methods or override methods from BaseMapper
}
```
这样,当您使用UserOpenidMapper时,它将默认操作"user_openid"表而不是"User"表。
相关问题
@Mapper @TableName("user_openid") public interface UserMapper extends BaseMapper<User> { }加了注解还是操作的user表
在 MyBatis-Plus 中,@TableName 注解用于指定实体对应的数据库表名,@Mapper 注解则用于指定该接口为 MyBatis 的 Mapper 接口。在这个例子中,@TableName 注解指定了 User 实体对应的数据库表名为 user_openid,@Mapper 注解指定了 UserMapper 接口为 MyBatis 的 Mapper 接口。虽然 User 实体对应的数据库表名为 user_openid,但是 UserMapper 接口中的 SQL 操作语句仍然是针对 user 表的。这是因为 MyBatis-Plus 会自动将实体类名转换为对应的数据库表名。如果你想要操作 user_openid 表,你可以在 SQL 语句中指定表名为 user_openid。例如:SELECT * FROM user_openid。
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;,和public interface UserMapper extends MyBaseMapper<User> {},public interface UserAccountMapper extends MyBaseMapper<UserAccount> { },public interface MyBaseMapper<T> extends Mapper<T>, MySqlMapper<T>,MyInsertListMapper<T> { },如何插入?(不用jpa)
可以使用Mybatis进行插入操作。首先,在mapper.xml中编写插入语句:
```xml
<!-- 插入用户信息 -->
<insert id="insertUser" parameterType="User">
INSERT INTO user(id, session_key, nickname, role, phone_number)
VALUES(#{id}, #{sessionKey}, #{nickname}, #{role}, #{phoneNumber})
</insert>
<!-- 插入用户账户信息 -->
<insert id="insertUserAccount" parameterType="UserAccount">
INSERT INTO user_account(user_id, password)
VALUES(#{userId}, #{password})
</insert>
```
然后,在对应的Mapper接口中定义插入方法:
```java
public interface UserMapper {
void insertUser(User user);
}
public interface UserAccountMapper {
void insertUserAccount(UserAccount userAccount);
}
```
最后,在业务逻辑代码中调用插入方法即可:
```java
User user = new User();
user.setId("openid");
user.setSessionKey("session_key");
user.setNickname("nickname");
user.setRole(1);
user.setPhoneNumber("phone_number");
userMapper.insertUser(user);
UserAccount userAccount = new UserAccount();
userAccount.setUserId("openid");
userAccount.setPassword("password");
userAccountMapper.insertUserAccount(userAccount);
```
注意,如果使用的是Mybatis 3.5.0以上版本,可以直接使用@Insert注解代替在xml中编写插入语句。例如:
```java
@Insert("INSERT INTO user(id, session_key, nickname, role, phone_number) VALUES(#{id}, #{sessionKey}, #{nickname}, #{role}, #{phoneNumber})")
void insertUser(User user);
```
阅读全文