Java自定义注解注解实现实体类与数据库表字段的映射

Java自定义注解注解实现实体类与数据库表字段的映射,第1张

这个 按照我的理解

首先自定义注解要有自己的编译解释方法的

在这个便已解释方法中估计需要连接数据库(当然最基本的jdbc什么的)

当然连接数据库什么的涉及到配置文件

通过jdbc获取到数据库信息 把注解中的参数与数据库中的信息关联(简单的就可以存成List<Map等方式)由于注解的参数一般是类名。你可以 用反射的方式或其他方式(比如字节码什么的)来处理获取类的属性

然后 我感觉关联完了 就没啥然后了 感觉主要是在注解的编译解释方法中做写东西 当然 提高效率也可以用数据库连接池什么的

建议做法如下:

第一,写一个符合javaBean标准的实体类,类的属性名称和类型分别与数据库的字段对应,并加上无参构造方法和get、set方法;

第二,使用注解配置映射关系,用@Entity注解该类是一个实体类,用@Table(name = "表名")注解该实体类映射的表名,通过在每一个属性的get方法上添加@Column(name = "列名")注解该属性映射的列;

第三,配置主键,找出表主键映射的那个属性,用@Id在该属性的get方法上注解该属性为Id。(根据具体需要,可能还要做一些更详细的配置)

参考代码如下:

import javax.persistence.Column

import javax.persistence.Entity

import javax.persistence.Id

import javax.persistence.Table

import org.hibernate.annotations.Parameter

/**

 * 

 * 用户

 */

@Entity //说明该类是实体类

@Table(name = "USER")//说明该类映射的是表USER

public class TUser implements java.io.Serializable {

    private String userID // 用户id

    private String userName // 用户名称

    private String loginName // 登录名称

    private String password // 密码

    private Integer status // 状态

    private java.util.Date lastLoginTime // 上次登录时间

    private java.util.Date regTime // 注册时间

    

    @Id//说明该属性映射的是表USER的主键

    @Column(name = "UserID", unique = true, nullable = false)

    //该属性映射的是表USER的UserId字段,非空且唯一

    public String getUserID() {

        return this.userID

    }

    public void setUserID(String userID) {

        this.userID = userID

    }

    @Column(name = "UserName")

    public String getUserName() {

        return userName

    }

    public void setUserName(String userName) {

        this.userName = userName

    }

    @Column(name = "LoginName")

    public String getLoginName() {

        return this.loginName

    }

    public void setLoginName(String loginName) {

        this.loginName = loginName

    }

    @Column(name = "Password")

    public String getPassword() {

        return this.password

    }

    public void setPassword(String password) {

        this.password = password

    }

    @Column(name = "Status")

    public Integer getStatus() {

        return status

    }

    public void setStatus(Integer status) {

        this.status = status

    }

    @Column(name = "LastLoginTime")

    public java.util.Date getLastLoginTime() {

        return lastLoginTime

    }

    public void setLastLoginTime(java.util.Date lastLoginTime) {

        this.lastLoginTime = lastLoginTime

    }

    @Column(name = "RegTime")

    public java.util.Date getRegTime() {

        return regTime

    }

    public void setRegTime(java.util.Date regTime) {

        this.regTime = regTime

    }

    @Override

    public int hashCode() {

        int prime = 0

        prime += this.getUserID().hashCode()

        return prime

    }

    @Override

    public boolean equals(Object obj) {

        boolean isEquals = false

        if (obj != null && this.getClass() == obj.getClass()) {

            TUser clazz = (TUser) obj

            if (clazz.getUserID().equals(this.getUserID()))

                isEquals = true

            return isEquals

        }

        return isEquals

    }

}

sql数据库用户映射是什么意思,有什么作用。

好像是用户名和登录名之间的联系,用来设置登录名权限的

数据库表映射问题

select * into B.dbo.a from A.dbo.a

就把表同步过去

如果只同步表结构

select * into B.dbo.a from A.dbo.a where 1<>1

如何:将实体映射到数据库表

是通过映射文件来映射的。举个简单的例子,例如我有个Teacher实体类(某教学管理系统老师用户):

private Integer id编号

private String name姓名

private String password密码

private Date createDate创建日期

同时,我创建了数据表TEACHER:

create table teacher( id number(9) primary key,--编号 name varchar2(20),--姓名 password varchar2(20),--密码 create_date date--创建日期)

这时,怎么关联它们呢?通过加载hibernate框架,我们就可以使用映射文件来关联实体类和数据库了

文件名:Teacher.hbm.xml(必须与实体类名字一致)

内容:

>

(SQL Server 导入和导出向导)里面,编辑映射和列映射什么意思?干嘛用的? 10分

这个就是讲,要做一个对应.

比方讲你要导入一个表.那假如你想把列1的内容导入到列2里面,你就需要告诉数据库你的这个需求.

此时,便需要添加一个列的映射.

希望对你有所帮助哈~~

SQLSERVER2000里怎么将一个数据库里的表映射到另一数据库

可以在需要被映射的服务器上,添加一个 连接服务器。

这样可以直接通过连接服务器访问你需要的数据表。

如何将含有继承关系的类图映射为关系数据库

库。 通常使用以下两种方法来映射继承关系: 1)将基类映射到一张表,每个子类映射到一张表。在基类对应的表中定义主键,而在 子类对应的表中定义外键。 2)将每个子类映射到一张表,没有基类表。在每个子类的表中包括基类的所有属性。 这种方法适用于子类的个数不多,基类属性比较少的情况。

POJO怎么映射成数据库的表?

用hibernate框架pojo里用hibernate注解 例如:package .ayumi.pojo

import java.io.Serializable

import javax.persistence.Columnimport javax.persistence.Entityimport javax.persistence.Idimport javax.persistence.Table

import org.hibernate.validator.NotNull

@Entity 实体对象@Table(name="users") 表名public class Users implements Serializable {private Integer idprivate String usernameprivate String password@Id 主键@Column(name="id") 列名public Integer getId() {return id}public void setId(Integer id) {this.id = id}@Column(name="username",length=20) 列名 及 长度设定@NotNull 非空设定public String getUsername() {return username}public void setUsername(String username) {this.username = username}@Column(name="password",length=20) 列名 及 长度设定public String getPassword() {return password}public void setPassword(String password) {this.password = password}}

这样就对表的字段定义好了然后编写main方法测试类public static void main(String[] args) {Configuration cfg=new AnnotationConfiguration().configure()SchemaExport eport=new SchemaExport(cfg)eport.create(true, true)}

执行,这样就会在hibernate.cfg.xml里配置好的相应连接中对应的数据库下创建成功数据库表

java中的映射是什么意思

简单的说就是把一个数据库表里的字段和一个java类里的属性对应起来,让程序知道这个java类里的这个属性应该是数据库哪个表里的哪个字段。

hibernate是通过什么标签实现实体类和表的映射的

10.1 实体类的映射

从Java的角度讲,实体类就是普通的Java封装类(有人称为POJO有人称为VO)。仅从实体类中的代码信息,Hibernate并不能得知该实体类对应哪个数据表,因此还需要以某种方式配置一下。常用的方式有*.hbm.xml文件配置与@注解配置两种。

hbm.xml文件就是普通的xml文件,hbm为Hibernate Mapping的缩写,这样从文件名上就能判断该文件为Hibernate实体类配置文件。在JPA出现之前,Hibernate都使用hbm.xml文件配置。JPA出现后,推荐使用JPA的@注解配置,因为对于所有的ORM框架,@注解都是通用的。

10.1.1 使用@注解配置实体类

实体类一般有ID、普通属性、 *** 属性等,分别对应数据库的主键、普通列、外键。@注解配置中,实体类用@Entity注解,用@Table指定对应的数据表,用@Id配置主键,用@Column配置普通属性,用@OneToMany、@ManyToOne、@OneToOne、@ManyToMany配置实体间关系等。实体类之间的关于在后面的章节中会做详细介绍。下面编写一个UsersVo类,在该类中使用@注解配置实体类的映射,UsersVo类的代码如下:

package .vo

import javax.persistence.*

@Entity 注解Entity表示该类纳入Hibernate管理,能够被持久化

@Table(name = "users") 指定该实体类对应的数据库表名

public class UsersVo {

Fields

@Id 指定该列为主键。

这个注解用来表示主键类型, auto为数据库自增长类型

@GeneratedValue(strategy = GenerationType.AUTO)

private int id

@Column(name = "name") 指定变量对应的数据库表的列为"name"

private String name

@Column(name = "age")指定变量对应的数据库表的列为"age"

private int age

@Column(name = "tel")指定变量对应的数据库表的列为"tel"

private String tel

@Column(name = "address")指定变量对应的数据库表的列为"address"

private String address

Constructors

public UsersVo() {

}

public UsersVo(int id) {

this.id = id

}

public UsersVo(int id, String name, int age, String tel,

String address) {

this.id = id

this.name = name

this.age = age

this.tel = tel

this.address = address......>>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10032157.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存