mybatis的@Transient注解

定义

  • 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);
	}



}

你可能感兴趣的:(mybatis,mybatis,java)