我现在有50多个表,我都要实现对它们的记录增加,删除,修改,改变的操作!
我还要做50多个页面对他们进行显示,和那些操作的增加,删除,修改的操作!
工作量大不大,兄弟们自己估量!
有没有人帮我们设计一个类,来完成自动对那些功能的完成!
重点是一个类,能对几乎所有的表的操作!
我是用的JSP开发。我是狂晕!
我还要做50多个页面对他们进行显示,和那些操作的增加,删除,修改的操作!
工作量大不大,兄弟们自己估量!
有没有人帮我们设计一个类,来完成自动对那些功能的完成!
重点是一个类,能对几乎所有的表的操作!
我是用的JSP开发。我是狂晕!
而且很轻松
import java.sql.DatabaseMetaData;
import java.util.List;import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
public abstract class DAO { /**
* 获取数据库的元信息
* @return
*/
public static DatabaseMetaData metadata(){
try{
return getSession().connection().getMetaData();
}catch(Exception e){
e.printStackTrace();
}
return null;
}
/**
* 添加对象
* @param cbean
*/
public static void save(Object cbean){
try{
Session ssn = getSession();
beginTransaction();
ssn.save(cbean);
commit();
}catch(HibernateException e){
e.printStackTrace();
rollback();
throw e;
}
} /**
* 添加对象
* @param cbean
*/
public static void saveOrUpdate(Object cbean){
try{
Session ssn = getSession();
beginTransaction();
ssn.saveOrUpdate(cbean);
commit();
}catch(HibernateException e){
rollback();
throw e;
}
} /**
* 删除对象
* @param cbean
*/
public static void delete(Object cbean){
try{
Session ssn = getSession();
beginTransaction();
ssn.delete(cbean);
commit();
}catch(HibernateException e){
rollback();
throw e;
}
}
/**
* 根据主键删除某个对象
* @param objClass
* @param key
* @return
*/
protected static int delete(Class objClass, Serializable key){
StringBuffer hql = new StringBuffer("DELETE FROM ");
hql.append(objClass.getName());
hql.append(" AS t WHERE t.id=?");
return commitUpdate(hql.toString(), new Object[]{key});
} /**
* 写脏数据到数据库
*/
public static void flush(){
try{
Session ssn = getSession();
if(ssn.isDirty()){
beginTransaction();
ssn.flush();
commit();
}
}catch(HibernateException e){
rollback();
throw e;
}
}
/**
* 根据主键加载对象
* @param beanClass
* @param ident
* @return
*/
protected static Object getBean(Class beanClass, int id){
return getSession().get(beanClass, new Integer(id));
}
/**
* 执行普通查询语句
* @param hql
* @param args
* @return
*/
protected static List findAll(String hql, Object[] args){
return executeQuery(hql, -1, -1, args);
}
/**
* 执行普通查询语句
* @param hql
* @param args
* @return
*/
protected static List executeQuery(String hql, int fromIdx, int fetchCount, Object[] args){
Session ssn = getSession();
Query q = ssn.createQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
if(fromIdx > 0)
q.setFirstResult(fromIdx);
if(fetchCount > 0)
q.setMaxResults(fetchCount);
return q.list();
}
/**
* 执行更新语句
* @param hql
* @param args
* @return
*/
protected static int executeUpdate(String hql, Object[] args){
Session ssn = getSession();
Query q = ssn.createQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
return q.executeUpdate();
} /**
* 执行更新语句
* @param hql
* @param args
* @return
*/
protected static int commitUpdate(String hql, Object[] args){
try{
Session ssn = getSession();
beginTransaction();
Query q = ssn.createQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
int er = q.executeUpdate();
commit();
return er;
}catch(HibernateException e){
rollback();
throw e;
}
}
/**
* 执行返回单一结果的查询语句
* @param hql
* @param args
* @return
*/
protected static Object uniqueResult(String hql, Object[] args){
Session ssn = getSession();
Query q = ssn.createQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
q.setMaxResults(1);
return q.uniqueResult();
} /**
* 执行普通查询语句
* @param hql
* @param args
* @return
*/
protected static List executeNamedQuery(String hql, int fromIdx, int fetchCount, Object[] args){
Session ssn = getSession();
Query q = ssn.getNamedQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
if(fromIdx > 0)
q.setFirstResult(fromIdx);
if(fetchCount > 0)
q.setMaxResults(fetchCount);
return q.list();
} /**
* 执行普通查询语句
* @param hql
* @param args
* @return
*/
protected static List findNamedAll(String hql, Object[] args){
return executeNamedQuery(hql, -1, -1, args);
}
/**
* 执行返回单一结果的查询语句
* @param hql
* @param args
* @return
*/
protected static Object namedUniqueResult(String hql, Object[] args){
Session ssn = getSession();
Query q = ssn.getNamedQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
q.setMaxResults(1);
return q.uniqueResult();
} /**
* 执行更新语句
* @param hql
* @param args
* @return
*/
protected static int executeNamedUpdate(String hql, Object[] args){
Session ssn = getSession();
Query q = ssn.getNamedQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
return q.executeUpdate();
} /**
* 执行更新语句
* @param hql
* @param args
* @return
*/
protected static int commitNamedUpdate(String hql, Object[] args){
try{
Session ssn = getSession();
beginTransaction();
Query q = ssn.getNamedQuery(hql);
for(int i=0;args!=null&&i<args.length;i++){
q.setParameter(i, args[i]);
}
int er = q.executeUpdate();
commit();
return er;
}catch(HibernateException e){
rollback();
throw e;
}
}
/**
* Get a instance of hibernate's session
* @return
* @throws HibernateException
*/
protected static Session getSession(){
return HibernateUtils.getSession();
} /**
* Start a new database transaction.
*/
protected static void beginTransaction(){
HibernateUtils.beginTransaction();
} /**
* Commit the database transaction.
*/
protected static void commit(){
HibernateUtils.commit();
} /**
* Rollback the database transaction.
*/
protected static void rollback(){
HibernateUtils.rollback();
}
}
1.自动生成实体类(每个库表对应一个类);
2.然后生成是实体类的管理类,里边是对实体类的CRUD操作方法(一个实体类生成一个Manager类);
3.自动生成jsp页面;
谢谢!学习中!
谢谢!学习中!