Hibernate

来源:互联网 发布:php explode函数 编辑:程序博客网 时间:2024/06/05 05:17


hibernate 注解

实体类常用注解
@Entity  注解在类上@Table(name = "") 注解类上@Id 注解在getter上,标识这个属性是单一主键        主键生成策略只讲序列,其它的自己去了解        @Id        @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="xxx")        @SequenceGenerator(name="xxx",sequenceName="xxx_id_seq")        @Column(name="xxx_id")        public long getXxxid() {            return xxxid;        }@Column(  //注解在getter上        name="columnName";                                (1)          boolean unique() default false;                   (2)          boolean nullable() default true;                  (3)          boolean insertable() default true;                (4)          boolean updatable() default true;                 (5)          String columnDefinition() default "";             (6)          String table() default "";                        (7)          int length() default 255;                         (8)          int precision() default 0; // decimal precision   (9)          int scale() default 0; // decimal scale           (10)         (1) name 可选,列名(默认值是属性名)        (2) unique 可选,是否在该列上设置唯一约束(默认值false)        (3) nullable 可选,是否设置该列的值可以为空(默认值false)        (4) insertable 可选,该列是否作为生成的insert语句中的一个列(默认值true)        (5) updatable 可选,该列是否作为生成的update语句中的一个列(默认值true)        (6) columnDefinition 可选: 为这个特定列覆盖SQL DDL片段         (7) table 可选,定义对应的表(默认为主表)        (8) length 可选,列长度(默认值255)        (8) precision 可选,列十进制精度(decimal precision)(默认值0)        (10) scale 可选,如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)@Transient 注解在getter上 ;表示该属性并非一个到数据库表的字段的映射@Temporal标签的作用           (1) 如果在某类中有Date类型的属性,数据库中存储可能是'yyyy-MM-dd hh:MM:ss'要在查询时获得年月日,在该属性上标注@Temporal(TemporalType.DATE) 会得到形如'yyyy-MM-dd' 格式的日期。          (2)如果在某类中有Date类型的属性,数据库中存储可能是'yyyy-MM-dd hh:MM:ss'要获得时分秒,在该属性上标注 @Temporal(TemporalType.TIME) 会得到形如'HH:MM:SS' 格式的日期。          (3)如果在某类中有Date类型的属性,数据库中存储可能是'yyyy-MM-dd hh:MM:ss'要获得'是'yyyy-MM-dd hh:MM:ss',在该属性上标注 @Temporal(TemporalType.TIMESTAMP) 会得到形如'yyyy-MM-dd hh:MM:ss' 格式的日期
实体类常见关系

举例: 主表 AInfo.java 从表 BInfo.java

单项关联

    @ManyToOne(cascade={CascadeType.ALL})        @JoinColumn(name = "bid")    public BInfo getBInfo() {        return bInfo;    }

双向关联

//AInfo.javaprivate BInfo bInfo;//....    @ManyToOne(cascade={CascadeType.ALL})        @JoinColumn(name = "bid")    public BInfo getBInfo() {        return bInfo;    }private Set<AInfo> aInfos = new HashSet<AInfo>();//.....    @OneToMany(mappedBy = "bInfo",cascade={CascadeType.ALL})        public Set<AInfo> getAInfos() {        return aInfos;    }

增删改查

1、获得SessionFactory对象2、获得Session对象3、Session对象常用API    session.save(t)  //保存    session.suaveOrUpdate(t)//保存或更新    session.update(t)//更新    session.delete(t)//删除    session.createQuery(hql)//获得Query对象    session.createCriteria(Entity.class)//获得Criteria对象,Entity 为自己的实体类4、通过Query对象查询示例:    query.setParameter(index,value);//设置参数值    query.uniqueResult();//获得唯一结果    query.list();//获得列表
        String hql="select new com.magus.generallottery.entity.FullBet(bet,issue) from Bet bet,LotteryIssue issue "                + " where bet.issue=issue.issue and bet.lotteryTag=issue.lotterytag"                + " and bet.userId=? and bet.userBank=? order by bet.createtime desc";        Query query = this.getSession().createQuery(hql);        query.setParameter(0,userId);        query.setParameter(1, bank);        query.setFirstResult((currentPage - 1) * pageSize).setMaxResults(pageSize);        itemList = query.list();        query.uniqueResult()
 5、Criteria 对象查询    把查询语句对象化了
0 0
原创粉丝点击