⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 operatedb.java

📁 这是使用hibernate对持久层的操作,这样可以有效的对数据库的操作.
💻 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 + -