1. 接口代码
- package com.hp.common.basedao;
- import java.util.List;
- /**
- * <p>基础接口</p>
- *
- */
- public interface BaseService {
- /**
- * 添加
- * @param obj
- */
- public void save(Object obj);
- /**
- * 修改
- * @param obj
- */
- public void update(Object obj);
- /**
- * 列表
- * @return list<?>
- */
- public List<?> list();
- /**
- * 查找
- * @param id(int)
- * @return object
- */
- public Object find(int id);
- }
package com.hp.common.basedao;
import java.util.List;
/**
* <p>基础接口</p>
*
*/
public interface BaseService {
/**
* 添加
* @param obj
*/
public void save(Object obj);
/**
* 修改
* @param obj
*/
public void update(Object obj);
/**
* 列表
* @return list<?>
*/
public List<?> list();
/**
* 查找
* @param id(int)
* @return object
*/
public Object find(int id);
}
2.接口实现
- package com.hp.common.basedao;
- import java.util.ArrayList;
- import java.util.List;
- import javax.annotation.Resource;
- import org.hibernate.Query;
- import org.hibernate.SessionFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Propagation;
- import org.springframework.transaction.annotation.Transactional;
- /**
- * BaseService 接口实现</br>
- * @see com.hp.common.basedao.BaseService
- * @author
- *
- */
- @Transactional
- public class BaseServiceImpl implements BaseService{
- @Resource
- SessionFactory factory;
- private Object obj;
- /**
- * 获取类名称
- *
- * @param obj
- * @return String
- */
- public String getclname(Object obj) {
- return obj.getClass().getSimpleName();
- }
- /**
- * 组装List hql语句
- *
- * @param obj
- * @return hql
- */
- public String getHQL(Object obj) {
- String hql = "From " + getclname(obj);
- return hql;
- }
- public Object getObj() {
- return obj;
- }
- public void setObj(Object obj) {
- this.obj = obj;
- }
- public void del(int... ids) {
- for (int id : ids) {
- factory.getCurrentSession().delete(
- factory.getCurrentSession().load(obj.getClass(), id));
- }
- }
- public void del(String name, String param) {
- List<?> list = factory.getCurrentSession().createQuery(
- getHQL(obj) + " where " + name + "='" + param + "'").list();
- for (int i = 0; i < list.size(); i++) {
- factory.getCurrentSession().delete(list.get(i));
- }
- }
- public Object find(int id) {
- // factory.getCurrentSession().createQuery(getHQL(this.obj)+" where ");
- return null;
- }
- @Transactional(propagation = Propagation.NOT_SUPPORTED)
- public List<?> list() {
- return factory.getCurrentSession().createQuery(getHQL(obj)).list();
- }
- public void save(Object obj) {
- factory.getCurrentSession().persist(obj);
- }
- public void update(Object obj) {
- factory.getCurrentSession().merge(obj);
- }
- }
package com.hp.common.basedao;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* BaseService 接口实现</br>
* @see com.hp.common.basedao.BaseService
* @author
*
*/
@Transactional
public class BaseServiceImpl implements BaseService{
@Resource
SessionFactory factory;
private Object obj;
/**
* 获取类名称
*
* @param obj
* @return String
*/
public String getclname(Object obj) {
return obj.getClass().getSimpleName();
}
/**
* 组装List hql语句
*
* @param obj
* @return hql
*/
public String getHQL(Object obj) {
String hql = "From " + getclname(obj);
return hql;
}
public Object getObj() {
return obj;
}
public void setObj(Object obj) {
this.obj = obj;
}
public void del(int... ids) {
for (int id : ids) {
factory.getCurrentSession().delete(
factory.getCurrentSession().load(obj.getClass(), id));
}
}
public void del(String name, String param) {
List<?> list = factory.getCurrentSession().createQuery(
getHQL(obj) + " where " + name + "='" + param + "'").list();
for (int i = 0; i < list.size(); i++) {
factory.getCurrentSession().delete(list.get(i));
}
}
public Object find(int id) {
// factory.getCurrentSession().createQuery(getHQL(this.obj)+" where ");
return null;
}
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public List<?> list() {
return factory.getCurrentSession().createQuery(getHQL(obj)).list();
}
public void save(Object obj) {
factory.getCurrentSession().persist(obj);
}
public void update(Object obj) {
factory.getCurrentSession().merge(obj);
}
}
3.某段继承代码
- package com.hp.system.service;
- import com.hp.common.basedao.BaseService;
- /**
- * Extends BaseService</br>
- * {@link com.hp.common.basedao.BaseService}
- * @author
- *
- */
- public interface PubUsersService extends BaseService {
- }
package com.hp.system.service;
import com.hp.common.basedao.BaseService;
/**
* Extends BaseService</br>
* {@link com.hp.common.basedao.BaseService}
* @author
*
*/
public interface PubUsersService extends BaseService {
}
然后就是此继承的接口实现。
- package com.hp.system.impl;
- import javax.annotation.Resource;
- import org.hibernate.SessionFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import com.hp.common.basedao.BaseServiceImpl;
- import com.hp.system.bean.PubUsers;
- import com.hp.system.service.PubUsersService;
- @Service
- @Transactional
- public class PubUsersServiceImpl extends BaseServiceImpl implements
- PubUsersService {
- @Resource
- SessionFactory factory;
- PubUsers pubUsers=new PubUsers();
- public PubUsersServiceImpl() {
- super.setObj(pubUsers);
- }
- }
package com.hp.system.impl;
import javax.annotation.Resource;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.hp.common.basedao.BaseServiceImpl;
import com.hp.system.bean.PubUsers;
import com.hp.system.service.PubUsersService;
@Service
@Transactional
public class PubUsersServiceImpl extends BaseServiceImpl implements
PubUsersService {
@Resource
SessionFactory factory;
PubUsers pubUsers=new PubUsers();
public PubUsersServiceImpl() {
super.setObj(pubUsers);
}
}
我们有没有必要如此继承。且不说其中代码的拙劣之处。
想起.net中的代理机制。是不是在java中我们滥用了继承。