文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

@TableName和@Table的区别有哪些

2023-06-26 06:34

关注

这篇文章主要介绍“@TableName和@Table的区别有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“@TableName和@Table的区别有哪些”文章能帮助大家解决问题。

@TableName注解和@Table区别

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

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

前言

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

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

@TableName参数说明

@TableName和@Table的区别有哪些

@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属性用于指定数据库表名称

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

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

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

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

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

uniqueConstraints属性用于设定约束条件

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

小结一下

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

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

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的库,运行就正常了,然后在加进来有正常了 。

关于“@TableName和@Table的区别有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯