定义
-
MyBatis的@Transient注解是用来标记实体类中不需要持久化到数据库的字段,它会告诉MyBatis不需要将该字段映射为数据库表的列。
-
该注解的使用不仅限于实体类上有@Table注解的属性,它可以用在任何实体类的字段或者方法上。无论实体类是否有@Table注解,只要被@Transient注解标记的字段或方法都会被忽略,不进行数据库映射操作。
-
需要注意的是,@Transient注解是MyBatis与数据库操作无关的注解,它是由Java EE规范提供的javax.persistence包定义的注解之一,所以它的使用不仅限于MyBatis框架。
-
总结来说,@Transient注解用来标记不希望持久化到数据库的字段,而不仅仅是针对有@Table注解的属性。
实际
以上内容实际上是ai告诉我的
我了解的实际上的是
- @Transient注解在mybatis中查询中,新增中没有作用,因为使用的是我们自己写的sql
- @Transient注解是在实体类生成表的时候,告诉表哪些字段不用生成列
- 在使用tk-mybatis自带的方法时,比如新增,告诉框架哪些字段不用新增
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.*;
import javax.persistence.Column;
import java.io.Serializable;
import java.util.*;
/**
* @Description
* @Author 理想
* @Date 2024-01-15
*/
@Data
@Table( name ="t_sys_user" )
@ApiModel
public class SysUser implements Serializable {
private static final long serialVersionUID = 8808084812889674919L;
/**
* 用户ID
*/
@ApiModelProperty("用户ID")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id" )
private Long userId;
/**
* 部门ID
*/
@ApiModelProperty("部门ID")
@Column(name = "dept_id" )
private Long deptId;
@ApiModelProperty("部门名称")
@Transient
private String deptName;
/**
* 用户账号
*/
@ApiModelProperty("登录名称")
@Column(name = "user_name" )
private String userName;
/**
* 用户昵称
*/
@ApiModelProperty("用户名称")
@Column(name = "nick_name" )
private String nickName;
/**
* 用户类型(00系统用户)
*/
@Column(name = "user_type" )
private String userType;
/**
* 用户邮箱
*/
@Column(name = "email" )
@ApiModelProperty("用户邮箱")
private String email;
/**
* 手机号码
*/
@Column(name = "phonenumber" )
@ApiModelProperty("用户手机号码")
private String phonenumber;
/**
* 用户性别(0男 1女 2未知)
*/
@ApiModelProperty("性别")
@Column(name = "sex" )
private String sex;
/**
* 头像地址
*/
@ApiModelProperty("头像地址")
@Column(name = "avatar" )
private String avatar;
/**
* 密码
*/
@ApiModelProperty("用户密码")
@Column(name = "password" )
private String password;
/**
* 帐号状态(0正常 1停用)
*/
@ApiModelProperty("账号")
@Column(name = "status" )
private Integer status;
/**
* 删除标志(0代表存在 2代表删除)
*/
@Column(name = "del_flag" )
private String delFlag;
/**
* 最后登录IP
*/
@ApiModelProperty("最后登录IP")
@Column(name = "login_ip" )
private String loginIp;
/**
* 最后登录时间
*/
@ApiModelProperty("最后登录时间")
@Column(name = "login_date" )
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date loginDate;
/**
* 创建者
*/
@ApiModelProperty("创建者")
@Column(name = "create_by" )
private String createBy;
/**
* 创建时间
*/
@ApiModelProperty("创建时间")
@Column(name = "create_time" )
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
/**
* 更新者
*/
@Column(name = "update_by" )
private String updateBy;
/**
* 更新时间
*/
@ApiModelProperty("更新时间")
@Column(name = "update_time" )
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime;
@ApiModelProperty("组织机构id")
@Column(name = "organizational_structure_id" )
private Integer organizationalStructureId;
@Transient
@ApiModelProperty("组织机构名称")
private String organizationalStructureName;
/**
* 加密因子
*/
@ApiModelProperty("加密因子")
@Column(name = "salt" )
private String salt;
/**
* 备注
*/
@ApiModelProperty("备注")
@Column(name = "remark" )
private String remark;
@ApiModelProperty("角色id集合")
@Transient
private List<Integer> sysRoleIds = new ArrayList<>();
@ApiModelProperty("角色集合")
@Transient
private List<SysRole> sysRoles = new ArrayList<>();
public Map<Integer,String> getStatusDic() {
Map<Integer,String> map = new HashMap<>();
map.put(0,"正常");
map.put(1,"停用");
return map;
}
public String getStatusName() {
return getStatusDic().get(status);
}
/**
* 用户性别(0男 1女 2未知)
*/
public Map<String,String> getSexDic() {
Map<String,String> map = new HashMap<>();
map.put("0","男");
map.put("1","女");
map.put("2","未知");
return map;
}
public String getSexName() {
return getSexDic().get(sex);
}
}