@TableName注解和@Table的区别及说明

 更新时间:2022年01月15日 10:50:52   作者:A二十岁的某一天  
这篇文章主要介绍了@TableName注解和@Table的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

@TableName注解和@Table区别

最近开发项目的时候,从一个项目迁移代码到另一个项目,原有项目用的是Hibernate,现有项目用的是mybatis-plus,代码迁移过来后,schema属性用于指定数据库实例名。

但是@Table属性schema在mybatis-plus框架中失效了,一直找不到对应的实例名。 

前言

@TableName是mybatis-plus中的注解,主要是实现实体类型和数据库中的表实现映射。

注意,不要将@TableName和@Table注解认为是一个,虽然功能相同,但是,@TableName是mybatis-plus中的注解,@Table是Hibernate中的注解。

@TableName参数说明

在这里插入图片描述

@TableName源码

public @interface TableName {
    java.lang.String value() default "";
    java.lang.String schema() default "";
    boolean keepGlobalPrefix() default false;
    java.lang.String resultMap() default "";
    boolean autoResultMap() default false;
}

@TableName使用

@TableName("sys_user")
// 该注解主要是现实实体类型和数据库中的表实现映射。
public class SysUser implements Serializable {
    @TableId(type= IdType.AUTO)
    private Long id;
    private String username;
    //用户名
    private String loginName;
    //登录密码,密码需要加密
    private String password;
}

@Table

当实体类与其映射的数据库表名不同名时需要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行,也可与声明语句同行。

@Table 标注的常用选项是 name,用于指明数据库的表名

@Table标注还有一个两个选项 catalog 和 schema 用于设置表所属的数据库目录或模式,通常为数据库名。uniqueConstraints选项用于设置约束条件,通常不须设置。

  • name属性

name属性用于指定数据库表名称

若不指定则以实体类名称作为表名

  • catalog属性

catalog属性用于指定数据库实例名

当catalog属性不指定时,新创建的表将出现在url指定的数据库实例中

当catalog属性设置名称时,若数据库存在和指定名称一致的实例,新创建的表将出现在该实例中

  • schema属性

作用与catalog属性作用一致,可自行测试

  • uniqueConstraints属性

uniqueConstraints属性用于设定约束条件

@Table(name="CUSTOMERS",uniqueConstraints={@UniqueConstraint(columnNames={"name"})})
@Entity
public class Customer {
    private Integer id;
    private String name;
    private String email;
    private int age;
    ......
}

小结一下

1.当实体类名和数据库表名不一致时,name属性可以实现映射,及时表名一致,也推荐使用,提高程序的可读性

2.catalog和sechema属性一般不需要指定

3.uniqueConstraints属性一般也不需要指定,但是如有需要则可以指定

Table(name=“xx“)与Entity(name=“xx“) 问题

@Entity
@Table(name="T_qibie")

这样写的话在hql里要用实体的名字 from QibieVo

如果是这样的话

@Entity(name="T_qibie")

这样写的话在hql里要用表的名字 from T_qibie

还有有时候只能用@Entity(name="T_qibie")的话,可能是:JAVAEE6.0中的 javax.persistence.jar与 hibernate中的hibernate-jpa-2.1-api-1.0.0.Final.jar冲突 ,而我采取的措施是删除了JAVAEE6.0的库,运行就正常了,然后在加进来有正常了 。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring Cloud Ribbon负载均衡器处理方法

    Spring Cloud Ribbon负载均衡器处理方法

    这篇文章主要介绍了Spring Cloud Ribbon负载均衡器处理方法,看看是如何获取服务实例,获取以后做了哪些处理,处理后又是如何选取服务实例的,需要的朋友可以参考下
    2018-02-02
  • Springboot整合Activiti操作详解

    Springboot整合Activiti操作详解

    这篇文章主要给大家详细介绍了Springboot整合Activiti的操作流程,文中流程步骤和代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-07-07
  • SpringBoot整合Canal与RabbitMQ监听数据变更记录

    SpringBoot整合Canal与RabbitMQ监听数据变更记录

    这篇文章主要介绍了SpringBoot整合Canal与RabbitMQ监听数据变更记录,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • Springboot+WebSocket+Netty实现在线聊天/群聊系统

    Springboot+WebSocket+Netty实现在线聊天/群聊系统

    这篇文章主要实现在好友添加、建群、聊天对话、群聊功能,使用Java作为后端语言进行支持,界面友好,开发简单,文章中有详细的代码示例供大家参考,需要的朋友可以参考下
    2023-08-08
  • Java 汇编JVM编写jasmin程序的操作方法

    Java 汇编JVM编写jasmin程序的操作方法

    这篇文章主要介绍了Java 汇编JVM编写jasmin程序的操作方法,本文通过几个示例讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringBoot 回滚操作的几种实现方式

    SpringBoot 回滚操作的几种实现方式

    回滚操作是一种常见的操作,用于撤销之前执行的操作,本文主要介绍了SpringBoot回滚操作的几种实现方式,包含基于异常类型的回滚、基于自定义逻辑的回滚和基于数据库状态的回滚,感兴趣的可以了解一下
    2024-03-03
  • jvm crash的崩溃日志详细分析及注意点

    jvm crash的崩溃日志详细分析及注意点

    本篇文章主要介绍了jvm crash的崩溃日志详细分析及注意点。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-04-04
  • JAVA进程突然消失问题解决方案

    JAVA进程突然消失问题解决方案

    这篇文章主要介绍了JAVA进程突然消失问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • springboot集成ES实现磁盘文件全文检索的示例代码

    springboot集成ES实现磁盘文件全文检索的示例代码

    这篇文章主要介绍了springboot集成ES实现磁盘文件全文检索的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Java中的static静态代码块的使用详解

    Java中的static静态代码块的使用详解

    本篇文章介绍了,Java中的static静态代码块的使用详解。需要的朋友参考下
    2013-04-04

最新评论