使用的Hibernate框架连接数据库
第一步:创建BaseDao接口和BaseDaoImpl实现类
BadeDao接口
package cn.ex.dao;
import java.util.List;
public interface BaseDao<T> {
//添加
void save(T t);
//删除
void delete(T t);
//修改
void update(T t);
//根据ID查数据
T findById(int id);
//查询所有数据
List<T> findAll();
}
BaseDaoImpl实现类
package cn.ex.dao.impl;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;
import cn.ex.dao.BaseDao;
@Transactional
@SuppressWarnings("all")
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
private Class pClass;
public BaseDaoImpl() {
/*
* 获取参数类型
* Class class=this.getClass();
* Type type=class.getGenericSuperclass();
* ParameterizedType pType= (ParameterizedType)(type);
* Type[] types=pType.getActualTypeArguments();
* pClass=(Class<T>) types[0];
*/
pClass=(Class<T>)(((ParameterizedType)(this.getClass().getGenericSuperclass())).getActualTypeArguments()[0]);
}
//添加
public void save(T t) {
this.getHibernateTemplate().save(t);
}
//删除
public void delete(T t) {
this.getHibernateTemplate().delete(t);
}
//修改
public void update(T t) {
this.getHibernateTemplate().saveOrUpdate(t);
}
//根据ID查询对象
public T findById(int id) {
return (T) this.getHibernateTemplate().get(pClass, id);
}
//查询所有数据
public List<T> findAll() {
String sql="from"+pClass;
return (List<T>) this.getHibernateTemplate().find(sql);
}
}
CustomerDao接口
package cn.ex.dao;
import java.util.List;
import cn.ex.entity.Customer;
public interface CustomerDao extends BaseDao<Customer>{
//多条件查询
List<Customer> findBy(Customer customer);
}
CustomerImpl实现类
package cn.ex.dao.impl;
import java.util.List;
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;
import cn.ex.dao.CustomerDao;
import cn.ex.entity.Customer;
@Transactional
@SuppressWarnings("all")
public class CustomerDaoImpl extends BaseDaoImpl<Customer> implements CustomerDao {
//多条件查询
public List<Customer> findBy(Customer customer) {
DetachedCriteria criteria=DetachedCriteria.forClass(Customer.class);
if (null!=customer.getcName()&& "".equals(customer.getcName())) {
criteria.add(Restrictions.eq("cName", customer.getcName()));
}
if (null!=customer.getcLevel()&& "".equals(customer.getcLevel())) {
criteria.add(Restrictions.eq("cLevel", customer.getcLevel()));
}
if (null!=customer.getcSource()&& "".equals(customer.getcSource())) {
criteria.add(Restrictions.eq("cSource", customer.getcSource()));
}
if (null!=customer.getcPhone()&& "".equals(customer.getcPhone())) {
criteria.add(Restrictions.eq("cPhone", customer.getcPhone()));
}
if (null!=customer.getcMobile()&& "".equals(customer.getcMobile())) {
criteria.add(Restrictions.eq("cMobile", customer.getcMobile()));
}
return (List<Customer>) this.getHibernateTemplate().findByCriteria(criteria);
}
}
水平有限,作为复习查询之用,有什么错误之处,请留言指教!