@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的库,运行就正常了,然后在加进来有正常了 。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
上一篇: 在PHP项目中,用SeasLog高效、便捷的记录日志
下一篇: 现在的小孩子要逆天啊
推荐阅读
-
虚拟环境及venv和virtualenv的区别说明
-
Mysql中的table engine及各种engine的区别和作用讲解
-
mysql查询条件not in 和 in的区别及原因说明
-
asp(vbs)Rs.Open和Conn.Execute的详解和区别及&H0001的说明
-
@TableName注解和@Table的区别及说明
-
autoMapping和autoMappingBehavior的区别及说明
-
javascript中apply和call方法的作用及区别说明_javascript技巧
-
javascript中apply和call方法的作用及区别说明_javascript技巧
-
@TableName注解和@Table的区别及说明
-
@TableName注解和@Table的区别及说明