Manager-service-之Hibernate几种查询方式,在需要情况下配合使用。
如果要用到:普通sql语句
public String getAllSubDepId(Long depId){
String sql="select t.departmentid as id from department t start with t.departmentid="+depId+" connect by prior t.departmentid=t.fatherdepartmentid";
Session session = dao.getSessionFactory().getCurrentSession();
List<Long> list=session.createSQLQuery(sql).addScalar("id",Hibernate.LONG).list();
String ids="";
for(int i=0;i<list.size();i++){
ids=ids+list.get(i);
if(i<list.size()-1)
ids=ids+",";
}
return ids;
}
带分页用HQL查询时候:
public Page<IdentityInfo> getViewObjectsNew(Page<IdentityInfo> page,IdentityInfo entity) {
String hql="from IdentityInfo t where t.delFlag=0 ";
if(entity.getDepartmentEntity()!=null&&entity.getDepartmentEntity().getDepartmentId()!=null && entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0){
hql=hql+" and t.departmentEntity.id="+entity.getDepartmentEntity().getDepartmentId();
}else{
User user=SessionManager.getUserSession();
String hasAdminRole=roleManager.hasRole(user.getId(), 104l);
if(hasAdminRole.equals("YES"))
hql=hql+" ";
else{
String ids=departmentManager.getAllSubDepId(user.getDepartment().getId());
hql=hql+"and t.departmentEntity.id in("+ids+") ";
}
}
hql=hql+" order by t.priority,t.id";
return dao.find(page, hql,null);
}
用Criterion对象查询方式:
@Transactional(readOnly = true)
public List<IdentityInfo> getAllIdentityInfo(Page<IdentityInfo> page,IdentityInfo entity) {
List<Criterion> list = new ArrayList<Criterion>();
if (entity.getName() != null && entity.getName().trim().length() > 0)
list.add(Restrictions.like("name", '%' + entity.getName() + '%'));
if (entity.getDepartmentEntity() != null && entity.getDepartmentEntity().getDepartmentId() != null &&entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0)
list.add(Restrictions.eq("departmentEntity.departmentId", entity.getDepartmentEntity().getDepartmentId()));
if (list.size() > 0)
return dao.findByCriteria( list.toArray(new Criterion[list.size()]));
else
return dao.findAll();
}
用对象的第2种形式:
public Page<ResTeam> getObjects(Page<ResTeam> page, ResTeam entity) {
Criteria critera = dao.getSession().createCriteria(ResTeam.class);
if (entity.getType()!= null && !entity.getType().equals("all")) {
critera.add(Restrictions.like("type", '%' + StrUtils
.removedPercent(entity.getType().trim()) + '%'));
}
if (entity.getName() != null && entity.getName().trim().length() > 0)
critera.add(Restrictions.like("name", '%' + StrUtils
.removedPercent(entity.getName().trim()) + '%'));
if (entity.getStationInfo() != null) {
String stationName = entity.getStationInfo().getStationName();
if (stationName != null && stationName.trim().length() > 0) {
critera.createAlias("stationInfo", "st");
critera.add(Restrictions.like("st.stationName", '%' + StrUtils
.removedPercent(stationName.trim()) + '%'));
}
}
if (entity.getBaseOrg() != null && entity.getBaseOrg().getId()!=null)
{
critera.createAlias("baseOrg", "base");
critera.add(Restrictions.eq("base.id", entity.getBaseOrg().getId()));
}
critera.add(Restrictions.not(Restrictions.eq("delflag", 1)));
critera.addOrder(Order.desc("createDate"));
return dao.findByCriteria(page, critera);
}
3种方式对比:
public Page<GroupMember> getViewObjectsNew(Page<GroupMember> page,GroupMember entity) {
*//********** 这里判断多个,首先部门对象不为空,然后部门对象的ID不为空 **********//*
//法1:
if(entity.getDepartmentEntity()!=null&&entity.getDepartmentEntity().getDepartmentId()!=null && entity.getDepartmentEntity().getDepartmentId().compareTo(0l)>0){
String hql = "from GroupMember t where t.departmentEntity.departmentId=?";
return dao.find(page, hql, new Object[]{entity.getDepartmentEntity().getDepartmentId() });
}else{
return dao.findAll(page);
}
if(entity.getGpsEntity()!=null && entity.getGpsEntity().getId()!=null && entity.getGpsEntity().getId().compareTo(0l)>0){
String hql="from GroupMember m where m.gpsEntity.id=?";
return dao.find(page, hql, new Object[]{entity.getGpsEntity().getId()});
}else{
return dao.findAll(page);
}
//法2:
Criteria criteria=dao.getSession().createCriteria(GroupMember.class);
if(entity.getGpsEntity()!=null && entity.getGpsEntity().getId()!=null && entity.getGpsEntity().getId().compareTo(0l)>0){
System.out.println(entity.getGpsEntity().getId()+" ============manage id");
criteria.add(Restrictions.eq("gpsEntity.id", entity.getGpsEntity().getId()));
}
return dao.findByCriteria(page, criteria);
}
//法3:
public Page<GroupMember> getMemberByGroup(Page<GroupMember> page,Long groupId) {
String hql="from GroupMember t where t.gpsEntity.id=? and t.infoEntity.delFlag=0 order by infoEntity.departmentEntity.parent.divNum,infoEntity.departmentEntity.priority,infoEntity.priority,t.priority";
//String hql="from GroupMember t where t.gpsEntity.id=? order by t.priority";
return dao.find(page, hql, new Object[]{groupId});
}
分享到:
相关推荐
redis-desktop-manager-0.9.3.817.exeredis-desktop-manager-0.9.3.817.exeredis-desktop-manager-0.9.3.817.exeredis-desktop-manager-0.9.3.817.exeredis-desktop-manager-0.9.3.817.exeredis-desktop-manager-0.9...
已编译 Kafka-Manager-1.3.3.22 linux下直接解压解压kafka-manager-1.3.3.22.zip到/opt/module目录 [root@hadoop102 module]$ unzip kafka-manager-1.3.3.22.zip 4)进入到/opt/module/kafka-manager-1.3.3.22/...
戴尔笔记本自带的电源管家,可以控制电池最大充电量,例如将电池充电到80%即停止充电,电池电量低于70%开始充电等,可以从一定程度上保护电池
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
tomcat-redis-session-manager-2.0.0.jar
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-installer.bin
vRealize-Operations-Manager-Appliance-8.1.1.16522874_OVF10.ova
cloudera-manager-agent-5.9.0-1.cm590.p0.249.el7.x86_64.rpm cloudera-manager-daemons-5.9.0-1.cm590.p0.249.el7.x86_64.rpm cloudera-manager-server-5.9.0-1.cm590.p0.249.el7.x86_64.rpm cloudera-manager-...
【jmeter】jmeter插件管理插件:jmeter-plugins-manager-1.3.jar下载
kafka-manager.jar 配置application.conf中的zk地址后可直接启动 bin/kafka-manager -Dconfig.file=/kafka-manager-2.0.0.2/conf/application.conf -Dhttp.port=8888
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
jmeter的jmeter-plugins-manager-1.4.jar插件
cloudera-CDH5.16.1安装包,cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz。cloudera-CDH5.16.1安装包,cloudera-manager-centos7-cm5.16.1_x86_64.tar.gz。
支持tomcat8的redis-session-manager-master,测试环境jdk-8u191、apache-tomcat-8.0.53
01-network-manager-all.yaml
redis-desktop-manager-0.9.1.37.dmg Redis管理工具 0.9.1
jmeter-plugins-manager-1.3; 1、Download plugins-manager.jar 2、put it into lib/ext directory 3、 then restart JMeter.