📄 operatedb.java
字号:
package com.DAO;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import com.SessionFactory;
import com.po.Shipper;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.Query;
import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Expression;
import org.hibernate.criterion.Order;
public class OperateDB {
// private static Log log = LogFactory.getLog(OperateDB.class.getName());
private static final Logger logger = (Logger) Logger
.getLogger(OperateDB.class.getName());
private static org.hibernate.SessionFactory sessionFactory = SessionFactory
.getSessionFactory();
/* 新增货主信息 */
public boolean addShipperObj(Shipper shipper) throws Exception {
Session session = null;
Transaction ts = null;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
session.save(shipper);
ts.commit();
logger.info("test");
return true;
} catch (Exception e) {
logger.info("input:" + e.toString());
if (ts != null) {
ts.rollback();
}
throw e;
} finally {
session.close();
}
}
public List shipperAllList() throws Exception {
List list = new ArrayList();
Session session = null;
Transaction ts = null;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
Query query = session
.createQuery("from Shipper order by IdCard asc");
query.setFirstResult(0);
query.setMaxResults(10);
list = query.list();
ts.commit();
logger.info("shipperList:" + list.size());
return list;
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info("eror:" + e.toString());
throw e;
} finally {
session.close();
}
}
public List getObjList(Object obj, String orderField, String orderType)
throws Exception {
List list = new ArrayList();
Session session = null;
Transaction ts = null;
if (orderField == null || orderField.equals(""))
orderField = "id";
if (orderType == null || orderType.equals(""))
orderType = "asc";
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
Criteria cri = session.createCriteria(obj.getClass());
if (orderType.toLowerCase().equals("asc"))
cri.addOrder(Order.asc(orderField));
else
cri.addOrder(Order.desc(orderField));
list = cri.list();
logger.info("size:" + list.size());
ts.commit();
return list;
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info("error:" + e.toString());
throw e;
} finally {
session.close();
}
}
public Object getObj(Object CLASS, Long id) throws Exception {
Session session = null;
Transaction ts = null;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
Criteria cri = session.createCriteria(CLASS.getClass());
Criterion exp1 = Expression.eq("id", id);
cri.add(exp1);
cri.setMaxResults(1);
CLASS = cri.uniqueResult();
logger.info("object:" + CLASS.getClass().getName());
ts.commit();
return CLASS;
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info("e:" + e);
throw e;
} finally {
session.close();
}
}
public List getSysAdmin(Object obj, Hashtable table) throws Exception {
Session session = null;
Transaction ts = null;
List list = new ArrayList();
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
Criteria cri = session.createCriteria(obj.getClass());
Enumeration enums = table.keys();
while (enums.hasMoreElements()) {
String key = (String) enums.nextElement();
String[] keys = key.split("_");
if (table.get(key)!= null&&!table.get(key).toString().equals("")) {
if (keys[1].equals("char")) {
cri.add(Expression.eq(keys[0], table.get(key)));
}
}
}
list = cri.list();
return list;
} catch (Exception e) {
if (ts != null) {
ts.rollback();
}
logger.info("e:" + e.toString());
list = new ArrayList();
return list;
} finally {
session.close();
}
}
// _ids,_int,_char
public List getObjList(Object obj, Hashtable table) throws Exception {
Session session = null;
Transaction ts = null;
List result = new ArrayList();
try {
Enumeration enums = null;
session = SessionFactory.getSession();
ts = session.beginTransaction();
Criteria cri = (Criteria) session.createCriteria(obj.getClass());
if (table != null) {
enums = table.keys();
}
if (enums != null) {
while (enums.hasMoreElements()) {
String key = (String) enums.nextElement();
String keys[] = key.split("_");
logger.info(keys[0] + ":" + keys[1]);
if (table.get(key).toString() != null&&!table.get(key).toString().equals("")) {
if (keys[1].equals("ids")) {
cri.add(Expression.idEq(new Long(table.get(key)
.toString())));
} else if (keys[1].equals("int")) {
cri.add(Expression.eq(keys[0], new Long(table.get(
key).toString())));
} else {
cri.add(Expression.like(keys[0], "%"
+ table.get(key) + "%"));
}
}
}
}
result = cri.list();
logger.info("size:" + result.size());
ts.commit();
return result;
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info("error:" + e.toString());
throw e;
} finally {
session.close();
}
}
public boolean updateObj(Object obj) throws Exception {
Session session = null;
Transaction ts = null;
boolean result = false;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
session.update(obj);
ts.commit();
result = true;
return result;
} catch (Exception e) {
if (ts != null)
ts.rollback();
result = false;
logger.info("update_Error:" + e.toString());
return result;
} finally {
session.close();
}
}
public void deleteObj(Object obj) throws Exception {
Session session = null;
Transaction ts = null;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
session.refresh(obj);
session.delete(obj);
ts.commit();
logger.info("true");
} catch (Exception e) {
if (ts != null)
ts.rollback();
throw e;
} finally {
session.close();
}
}
public Object addObj(Object obj) {
Session session = null;
Transaction ts = null;
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
session.save(obj);
ts.commit();
return obj;
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info(e.toString());
return null;
} finally {
session.close();
}
}
// 如果是进行集合操作则要在字段后面加上"_集合函数";
// select 的字段在group by语句用到则直接写上字段名即可。
// 如果In里是多个值时就用","把各个值分开,然后加入到VALUE属性.
public List getObjList(Object obj, Hashtable select, Hashtable where,
List groupby) {
Session session = null;
Transaction ts = null;
Query query = null;
List list = new ArrayList();
String selectClause = new String("select ");
String groupByClause = new String(" group by ");
String whereClause = new String(" where ");
if (select != null) {
Enumeration enums = select.keys();
while (enums.hasMoreElements()) {
String key = (String) enums.nextElement();
String keys[] = key.split("_");
if (keys.length >= 2) {
if (keys[1].toUpperCase().equals("SUM")) {
selectClause += keys[1] + "(o." + select.get(key)
+ "),";
} else if (keys[1].toLowerCase().equals("AVG")) {
selectClause += keys[1] + "(o." + select.get(key)
+ "),";
} else if (keys[1].toUpperCase().equals("MAX")) {
selectClause += keys[1] + "(o." + select.get(key)
+ "),";
} else if (keys[1].toUpperCase().equals("MIN")) {
selectClause += keys[1] + "(o." + select.get(key)
+ "),";
} else if (keys[1].toUpperCase().equals("COUNT")) {
selectClause += keys[1] + "(o." + select.get(key)
+ "),";
}
}
if (groupby.size() <= 0) {
selectClause += "o." + select.get(key) + ",";
} else {
for (int i = 0; i < groupby.size(); i++) {
if (key.equals(groupby.get(i))) {
selectClause += "o." + select.get(key) + ",";
break;
}
}
}
}
}
if (selectClause.replaceAll(" ", "").equals("select")) {
selectClause = "";
} else {
selectClause = selectClause.trim().substring(0,
selectClause.length() - 1);
}
selectClause += " from ";
if (where != null) {
Enumeration wheres = where.keys();
while (wheres.hasMoreElements()) {
String key = (String) wheres.nextElement();
logger.info("key:" + key);
String keys[] = key.split("_");
if (where.get(key).toString() != null&&!where.get(key).toString().equals("")) {
if (keys[1].equals("ids")) {
whereClause += " o." + keys[0] + "=" + where.get(key)
+ " and";
} else if (keys[1].toLowerCase().equals("null")) {
whereClause += " (o." + keys[0] + " is "
+ where.get(key) + ") and";
} else if (keys[1].toLowerCase().equals("notnull")) {
whereClause += " (o." + keys[0] + " is "
+ where.get(key) + " or " + "o." + keys[0]
+ "<>'') and";
} else if (keys[1].equals("int")) {
whereClause += " o." + keys[0] + "=" + where.get(key)
+ " and";
} else if (keys[1].equals("notin")) {
whereClause += "o." + keys[0] + " not in ("
+ where.get(key) + ") and";
} else if (keys[1].equals("in")) {
whereClause += "o." + keys[0] + " in ("
+ where.get(key) + ") and";
} else {
whereClause += " o." + keys[0] + " like '%"
+ where.get(key) + "%' and";
}
}
}
}
logger.info("whereClausenew:" + whereClause);
if (whereClause.toLowerCase().endsWith("and")) {
whereClause = whereClause.substring(0, whereClause.length()
- "and".length());
} else if (whereClause.trim().toLowerCase().equals("where")) {
whereClause = "";
}
logger.info("whereClauseold:" + whereClause);
if (groupby != null) {
for (int i = 0; i < groupby.size(); i++) {
groupByClause += "o." + groupby.get(i) + ",";
}
}
logger.info("groupByClausenew:" + groupByClause);
if (groupByClause.replaceAll(" ", "").equals("groupby")) {
groupByClause = "";
} else {
groupByClause = groupByClause.substring(0,
groupByClause.length() - 1);
}
logger.info("groupByClauseold:" + groupByClause);
try {
session = SessionFactory.getSession();
ts = session.beginTransaction();
query = session.createQuery(selectClause + obj.getClass().getName()
+ " o " + whereClause + groupByClause);
list = query.list();
ts.commit();
} catch (Exception e) {
if (ts != null)
ts.rollback();
logger.info("error getObjList3:" + e.toString());
list = new ArrayList();
} finally {
session.close();
}
logger.info("select from where:" + selectClause
+ obj.getClass().getName() + " o " + whereClause
+ groupByClause);
return list;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -