zoukankan      html  css  js  c++  java
  • 实体类 @TableName&@TableField&@Version

    转自:https://www.cnblogs.com/dianzan/p/11181144.html

    //指向表table_biao
    @TableName("table_biao)
    public class UserThirdLogin extends Model<UserThirdLogin>{
    private static final long serialVersionUID = 1L;

    //指向表中的id
        @TableId(value = "id", type = IdType.AUTO)
        private Integer id;
        /**
         * 用户的id
         */
    //指向表中user_id字段,点表中的字段与所使用的字段不一样时使用,比如user_id(表)和userId(用) @TableField("user_id") private Integer userId; /** * 昵称 */
    @TableField(value="create_date", fill = FieldFill.INSERT)
    protected Date createDate
     
    复制代码
    复制代码
    @TableName("p_user_bill")
    public class UserBill extends Model<UserBill> {

    //关于serialVersionUID的解释
    //serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
    //你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式: 一个是默认的1L,比如:private static final long serialVersionUID = 1L;
    //一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,
    //比如:private static final long serialVersionUID = -8940196742313994740L;之类的。
    private static final long serialVersionUID = 1L;
    
        @TableId(value = "id", type = IdType.AUTO)  //可不写,但建议写
        private Integer id;
        /**
         * 用户的id
         */
        @TableField("user_id")
        private Integer userId;
        /**
         * 订单id
         */
        @TableField("order_id")
        private Integer orderId;
        /**
         * 费用类型,1:销售提成;2:物流费用;3:安装服务费;4:预约服务费;5:订单服务佣金;6:订单收入;7:订单成本
         */
        @TableField("fee_type")
        private Integer feeType;
        /**
         * 账单类型(支出1,收入0)
         */
        private String type;
        /**
         * 账单金额
         */
        private BigDecimal money;
        /**
    复制代码

    https://zhidao.baidu.com/question/428013630.html

     hhttps://blog.csdn.net/tianmaxingkonger/article/details/84851206(copy

    复制代码
    import java.util.Date;
    import com.baomidou.mybatisplus.activerecord.Model;
    import com.baomidou.mybatisplus.annotations.TableField;
    import com.baomidou.mybatisplus.annotations.TableId;
    import com.baomidou.mybatisplus.annotations.Version;
    import com.baomidou.mybatisplus.enums.FieldFill;
    import com.baomidou.mybatisplus.enums.IdType;
     
    /**
     * ClassName: BaseEntity <br/>
     * Description: 实体类基类 <br/>
     * Date: 2018年8月27日 上午11:43:58 <br/>
     * <br/>
     * 
     * @author wsp@sunnybs.com(邮箱)
     * 
     *         修改记录
     * @version 产品版本信息 2018-12-06 姓名(邮箱) 修改信息<br/>
     * 
     */
    @SuppressWarnings("rawtypes")
    public abstract class BaseEntity<T extends Model> extends Model {
     
        private static final long serialVersionUID = 1L;
     
     
        /**
         * id
         */
        @TableId(value = "id", type = IdType.AUTO)
        protected Long id;
        
        @TableField(value="create_date", fill = FieldFill.INSERT)
        protected Date createDate;
        
        /**
         * 更新日期<br>
         * @TableField注解说明:<br>
         * 
         * <h1>1、value属性:</h1>
         * 生成sql时,实体属性(例如modifyDate)对应数据库表的列名(表字段,例如modify_date)。<br>
         * 
         * <h1>2、fill属性:</h1>
         * 指定数据库表的字段的填充策略,各枚举值含义请自己看源码。<br>
         * 配置该属性,在执行insert、update等SQL时,如果策略匹配成功,就会在生成的SQL中自动追加新增、更新该字段的内容,<br>
         * 并且该字段的取值会通过MetaObjectHandler类的insertFill、updateFill等对应方法中的设置进行赋值。<br>
         * 如果通过该填充策略给数据库表字段自动填充值时,必须自己实现MetaObjectHandler抽象类,并注册到mybatis的全局配置中去。<br>
         * 请参考mybatis-plug自动填充功能:{@link https://mp.baomidou.com/guide/auto-fill-metainfo.html}<br>
         * springBoot的配置:{@link https://www.cnblogs.com/lqtbk/p/9843401.html}<br>
         * 本项目中MetaObjectHandler的实现类未:{@link com.stylefeng.guns.core.handler.ModelMetaObjectHandler}<br>
         * <b>注意:</b><br>
         * 如果该注解同时设置了“update属性”(见下),且fill属性取值为UPDATE或INSERT_UPDATE,那么fill属性优先级高于update属性,会导致设置的update属性策略失效!!!<br>
         * 
         * <h1>3、update属性:</h1>
         * 对实体进行update操作时,生成的update SQL,会注入该字段的更新。<br>
         * 例如:<br>
         * update="NOW()",则生成的SQL中会含“update ... set ..., modify_date = NOW()”<br>
         * update="%s+1",则生成的SQL中会含“update ... set ..., version = version + 1<br>
         * <b>注意:</b><br>
         * 如果该注解同时设置了“fill属性”(见上),且fill属性取值为UPDATE或INSERT_UPDATE,那么fill属性优先级高于update属性,会导致设置的update属性策略失效!!!<br>
         * 
         * <h1>优先级总结:</h1>
         * 实体属性更新到数据库时,属性值来源的优先级:实体类对象setter设置的值 &gt; fill策略填充的值 &gt; update策略SQL注入的值。<br>
         * <b>注意:</b><br>
         * setter优先级和fill策略优先级,是在MetaObjectHandler中自己手动实现的。
         */
        @TableField(value="modify_date", fill = FieldFill.INSERT, update="NOW()")
        protected Date modifyDate;
     
        /**
         * @Version注解说明:<br>
         * 更新时,实体对象的version属性必须有值,才会生成SQL update ... WHERE ... and version=?
         */
        @Version
        @TableField(value="version", fill = FieldFill.INSERT, update="%s+1")
        protected Long version;
     
    }
    复制代码
    复制代码
    import java.util.Date;
    import org.apache.ibatis.reflection.MetaObject;
    import com.baomidou.mybatisplus.mapper.MetaObjectHandler;
     
    /**
     * <p>
     * 默认填充器关闭操作
     * </p>
     *
     * @author wsp@sunnybscom
     * @since 2018-12-05
     */
    public class ModelMetaObjectHandler extends MetaObjectHandler {
     
        /**
         * metaObject是页面传递过来的参数的包装对象,不是从数据库取的持久化对象,因此页面传过来哪些值,metaObject里就有哪些值。
         */
        @Override
        public void insertFill(MetaObject metaObject) {
            Date now = new Date();
            Object createDate = this.getFieldValByName("createDate", metaObject);
            if(null == createDate){
                /**
                 * 设置实体属性setter进去的值,优先级要高于自动填充的值。
                 * 如果实体没有设置该属性,就给默认值,防止entity的setter值被覆盖。
                 */
                this.setFieldValByName("createDate", now, metaObject);
            }
            Object modifyDate = this.getFieldValByName("modifyDate", metaObject);
            if(null == modifyDate){
                this.setFieldValByName("modifyDate", now, metaObject);
            }
            Object version = this.getFieldValByName("version", metaObject);
            if(null == version){
                this.setFieldValByName("version", 0L, metaObject);
            }
        }
        
        @Override
        public void updateFill(MetaObject metaObject) {
        }
    }
    复制代码
    复制代码
    #Spring Boot application.yml
     
    mybatis-plus:
      typeAliasesPackage: com.stylefeng.guns.modular.system.model
      # 枚举属性自动转换,支持统配符 * 或者 ; 分割
      typeEnumsPackage: com.stylefeng.guns.modular.*.model.enums
      #自定义填充策略接口实现
      global-config.meta-object-handler: com.stylefeng.guns.core.handler.ModelMetaObjectHandler
    复制代码

     

    实体类 @TableName&@TableField&@Version

     
     
  • 相关阅读:
    hibernate中HQL多对多的查询
    Georgia Tech- 新的篇章
    吴军《智能时代》读书笔记
    P5项目完成记录
    Codewar python训练题全记录——持续更新
    优达学城纳米学位P5项目知识点总结——github使用
    优达学城数据分析师纳米学位——P5项目知识点整理贝叶斯规则
    优达学城数据分析师纳米学位——P5项目知识点整理机器学习基本术语
    P3-SQL 学习笔记
    HTML+CSS 学习笔记
  • 原文地址:https://www.cnblogs.com/sharpest/p/13705521.html
Copyright © 2011-2022 走看看