//使用Criteria查询所有
public static void demo1() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);//理解成from User
List<User> listUser = cri.list();//返回查到的所有实体类对象
if (listUser != null && listUser.size() > 0) {
for (int i = 0; i < listUser.size(); i++) {
User user = listUser.get(i);
System.out.println("id:" + user.getId() + "name:"
+ user.getName());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
//Restrictions:创建匹配单元
public static void demo2() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);
cri.add(Restrictions.like("name", "demo2%"));//匹配单元,匹配字段name和demo2...像的对象
List<User> listUser = cri.list();
if (listUser != null && listUser.size() > 0) {
for (int i = 0; i < listUser.size(); i++) {
User user = listUser.get(i);
System.out.println("id:" + user.getId() + "name:"
+ user.getName());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
//Example 封装匹配条件
public static void demo3() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);
User match = new User();
match.setName("demo1");
match.setPassword("1");
cri.add(Example.create(match));
List<User> listUser = cri.list();
if (listUser != null && listUser.size() > 0) {
for (int i = 0; i < listUser.size(); i++) {
User user = listUser.get(i);
System.out.println("id:" + user.getId() + " name:"
+ user.getName() + " password:"
+ user.getPassword());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
//使用Order排序
public static void demo4() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);
cri.add(Restrictions.like("name", "demo%"));
cri.addOrder(Order.desc("id"));//Order by
List<User> listUser = cri.list();
if (listUser != null && listUser.size() > 0) {
for (int i = 0; i < listUser.size(); i++) {
User user = listUser.get(i);
System.out.println("id:" + user.getId() + "name:"
+ user.getName());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
//Projections 聚合查询
public static void demo5() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);
ProjectionList plist = Projections.projectionList();
plist.add(Projections.property("name"));
plist.add(Projections.groupProperty("name"));//group by u.name
plist.add(Projections.rowCount());// select count(u)
plist.add(Projections.count("name"));//select count(u.name)性名不为空的
plist.add(Projections.countDistinct("name"));//select count( distinct u.name )性名不为空的且不重复的
plist.add(Projections.max("age"));//select max(u.age)
plist.add(Projections.min("age"));
plist.add(Projections.avg("age"));
plist.add(Projections.sum("age"));
cri.setProjection(plist);
cri.setProjection(Projections.rowCount());
// 下面的简写方案
ProjectionList plist1 = Projections.projectionList();
plist1.add(Projections.rowCount());
cri.setProjection(plist1);
List<Object[]> listRow = cri.list();
if (listRow != null && listRow.size() > 0) {
for (int i = 0; i < listRow.size(); i++) {
Object[] aryCell = listRow.get(i);
System.out.println("name:" + aryCell[0] + " 数量:"
+ aryCell[1]);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
//分页功能
public static void demo6() {
Session session = null;
try {
session = getSession();
Criteria cri = session.createCriteria(User.class);
cri.add(Restrictions.like("name", "demo%"));// 其它条件往下加
ProjectionList plist = Projections.projectionList();
plist.add(Projections.rowCount());
cri.setProjection(plist);
Integer iTotalRecord = (Integer) cri.uniqueResult();//获得总记录数
System.out.println("总记录数:" + iTotalRecord);
cri.addOrder(Order.asc("id"));
cri.setProjection(null);
cri.setFirstResult(0);
cri.setMaxResults(10);
List<User> listUser = cri.list();
if (listUser != null && listUser.size() > 0) {
System.out.println("数据列表:");
for (int i = 0; i < listUser.size(); i++) {
User user = listUser.get(i);
System.out.println("id:" + user.getId() + "name:"
+ user.getName());
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (session != null && session.isOpen()) {
session.close();
}
}
}
hibernate的criteria
最新推荐文章于 2021-03-04 10:55:44 发布