HQL: session.createQuery(" ")
1、口诀:见表写对象,见列写属性
2、基本查询
<1> 查询表中所有的数据
<2> 查询某一列:返回值为:List<Object[]>
<3> 带条件查询
直接设值
session.createQuery("select * from tbName where cid=1").list();
命名参数
session.createQuery(select * from tbName where cname = ? and cpwd = ?).setString(0, "admin").setString(1,"123456").list();
索引方式
session.createQuery(select * from tbName where cname = :min and cpwd = :max).setString
("min","admin").setString("max","123456").list();
3、between and
select * from tbName where uage between ? and ?
4、聚合查询:
uniqueResult(),结果就是字符串
int page=Integer.parseInt(session.createQuery("select max(page) from Person").uniqueResult().toString());
System.out.println(page);
5、分页
setFirstResult();从第几条开始
setMaxResults();每页几条数据
int pageNo=2;
int pageSize=2;
List<Person> persons=session.createQuery("from Person").setFirstResult((pageNo-1)*pageSize).setMaxResults(pageSize).list();
for (Person person : persons) {
System.out.println(person);
}
6、排序
//排序
//年龄
List<Person> persons=session.createQuery("from Person order by page desc").list();
for (Person person : persons) {
System.out.println(person);
7、构造查询
带参构造:select new 对象(参数) from 表名所对应的实体类 别名
采用数组:特殊情况 (结果来源于多个表):
将二维数组转换封装成自己的对象( dto数据传输对象)
//构造查询
List<Person> persons=session.createQuery("select new Person(pname,page) from Person").list();
for (Person person : persons) {
System.out.println(person);
8、对象导航
//对象导航
session.createQuery("from Person p where p.city.caddress like ")
将查询语句放入映射文件中:格式:
<query name=" "><![CDATA[查询语句]></query>QL
session.getNamedQuery("name的值");