模糊查询和一种方法

通过这种方法来模糊查询,可以自定义匹配HQL语句

 

public List<User> searchUser(User user, PageInfo pageInfo) {

  init();
  Session session = null;
  List<User> list = null;

  try {
   session = this.ht.getSessionFactory().openSession();
   // 查询操作
   String hql10 = "select u from User u where 1=1";
   // 通过自定义的getHql()方法得到hql语句
   hql10 = this.getHql(hql10, user);
   Query q4 = session.createQuery(hql10);
   this.setValue(q4, user);
   list = (List<User>) q4.iterate();
   // 分页操作
   String hql11 = "select count(u) from User u ";
   Query q2 = session.createQuery(hql11);
   List list3 = q2.list();
   int count = (Integer) list3.get(0);
   pageInfo.setTotalRecords(count);// 设置总记录数
   int temp = count % pageInfo.getEveryPage();// 得取总页数
   if (temp == 0) {
    pageInfo.setTotalPage(temp);
   } else {
    pageInfo.setTotalPage(temp + 1);
   }
  } catch (Exception e) {

  }

  return list;
 }

 // 设置Query值
 private void setValue(Query q, User user) {
  if (user.getUserName() != null
    && user.getUserName().trim().length() > 0) {
   q.setString("userName", "%" + user.getUserName() + "%");
  }if(user.getRegisterStartTime()!=null){
   q.setString("registerStartTime", "%"+user.getRegisterStartTime()+"%");
  }if(user.getResisterEndTime()!=null){
   q.setString("registerEndTime", "%"+user.getResisterEndTime()+"%");
  }
  
  if (user.getName() != null && user.getName().trim().length() > 0) {
   q.setString("name", "%" + user.getName() + "%");
  }
  if (user.getEmail() != null && user.getEmail().trim().length() > 0) {
   q.setString("email", "%" + user.getEmail() + "%");
  }

 }

 // 获取HQL语句
 private String getHql(String hql, User user) {
  StringBuffer buffer = new StringBuffer();

  buffer.append(hql);

  /**
   * 判断用户名是否存在,如果存在,则append语句与传进来的hql进行组合 如:"hql"+"and o.address like
   * :address"
   */
  if (user.getUserName() != null
    && user.getUserName().trim().length() > 0) {
   buffer.append(" and u.userName like :userName");
  }
  if (user.getRegisterStartTime() != null) {
   buffer.append(" and u.registerTime >= :registerStartTime");
  }
  if (user.getResisterEndTime() != null) {
   buffer.append(" and u.rigisterTime <= :registerEndTime");
  }
  if (user.getName() != null && user.getName().trim().length() > 0) {
   buffer.append(" and u.name like :name");
  }
  if (user.getEmail() != null && user.getEmail().trim().length() > 0) {
   buffer.append(" and u.email like :email");
  }

  return buffer.toString();
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值