A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© mlany 初级黑马   /  2017-12-9 14:30  /  1072 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2017-12-11 17:22 编辑

Hibernate注解
//类上加
@Entity //声明实体 * @Table(name="t_book") //@Table来描述类与表对应
@Id 来声明一个主键
@GenerateValue 用它来声明一个主键生成策略
默认情况下相当于native
可以选择的主键生成策略 AUTO IDENTITY SEQUENCE
//声明主键是UUID类型
@GenericGenerator(name = "myuuid", strategy = "uuid")
@GeneratedValue(generator = "myuuid")
@Column来定义列
对于PO类中所有属性,如果你不写注解,默认情况下也会在表中生成对应的列。列的名称就是属性的名称
@Temporal来声明日期类型
TemporalType.DATA 只有年月日
TemporalType.TIME 只有小时分钟秒
TemporalType.TIMESTAMP 有年月日小时分钟秒
@OneToMany(targetEntity=Order.class,mappedBy="c",orphanRemoval=true)
targetEntity相当于<one-to-many class="">
mappedBy相当于inverse=true
orphanRemoval=true ==delete-ophan 删除与当前对象解除关系的对象。
@ManyToOne(targetEntity = Customer.class)
@JoinColumn(name = "c_customer_id") // 指定外键列
@ManyToMany(targetEntity = Student.class, mappedBy = "teachers") //多对多 mappedBy 表示inverse =true 外键维护交给外表
@ManyToMany(targetEntity = Teacher.class)@JoinTable(name = "t_s", joinColumns = {@JoinColumn(name = "c_s_id", referencedColumnName = "id") }, inverseJoinColumns = {@JoinColumn(name = "c_t_id") }) //多对多 建立中间表 joinColumns 表示本类的表中的字段名称,inverseJoinColumns 所关联的外表的键名
@Cascade(CascadeType.SAVE_UPDATE) //级联操作
QBC criteria 排序 Criteria criteria = session.createCriteria(Order.class); criteria.addOrder(org.hibernate.criterion.Order.desc("money"));
----------------QBC------------------------- 条件检索 QBC criteria 添加条件是 通过Restrictions来添加 通过 criteria添加Restrictions 产生的条件
统计分析检索 Count sum avg max min 单条件时,通过setProjection添加(Projections.条件) 多条件分析统计时, Projections.projectionList().add链式添加所需要的条件
离线查询 是值在其他阶段将数据条件封装到detachedCriteria 通过detachedCriteria.getExecutableCriteria(session);获取criteria criteria 直接执行即可
本地Sql命名 注解方式 @SqlResultSetMapping(name = "customerMapping", entities = { @EntityResult(entityClass = Customer.class, fields = { @FieldResult(name = "id", column = "id"), @FieldResult(name = "name", column = "name") }) }) @NamedNativeQuery(name = "mysql", query = "select * from t_customer", resultSetMapping = "customerMapping")
Query query = session.getNamedQuery("mysql"); 直接执行即可
--------------------HQL------------------------------------- hql from Customer where ...order by ...desc
基本类似SQL from 类名 投影查询 查询指定字段 如果要封装到对象中该对象中必须有有要查询字段的构造方法 查询单列 获取到的是 list<Object>
命名检索 在类上加注解@NamedQuery(name="myHql",query="from Customer") 通过session.getNamedQuery("myHql");获取

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马