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

网友投稿 1525 2022-11-08

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

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

目录@TableName注解和@Table区别前言@TableName参数说明@Table小结一下Table(name=“xx“)与Entity(name=“xx“) 问题

@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("syhttp://s_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"http://})})

@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冲突 ,而我采取的措施是删除vSDJTp了JAVAEE6.0的库,运行就正常了,然后在加进来有正常了 。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:shell bash let 加减乘除/自增/自减
下一篇:Django错误:Migration admin.0001_initial is applied before its dependency users.0001_initial on databas
相关文章

 发表评论

暂时没有评论,来抢沙发吧~