`
chaoyi
  • 浏览: 291246 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

SSH sql+entity+dao+biz

 
阅读更多

Sql 语句

-- 以system登录
create user fav identified by bdqn;
grant dba to fav;
-- 以fav登录
create table FAVORITE
(
  F_ID    NUMBER(19) not null,
  F_LABEL VARCHAR2(200 CHAR) not null,
  F_URL   VARCHAR2(200 CHAR) not null,
  F_TAGS  VARCHAR2(200 CHAR),
  F_DESC  VARCHAR2(500 CHAR)
);
alter table FAVORITE
  add primary key (F_ID);
create table TAG
(
  T_ID    NUMBER(19) not null,
  T_NAME  VARCHAR2(100 CHAR) not null,
  T_COUNT NUMBER(19) not null
);
alter table TAG
  add primary key (T_ID);
-- 建了默认的序列
create sequence hibernate_sequence;
insert into FAVORITE (F_ID, F_LABEL, F_URL, F_TAGS, F_DESC)
values (hibernate_sequence.nextval, 'Spring', 'http://www.spring.org', 'spring', 'Spring官网');
commit;
insert into TAG (T_ID, T_NAME, T_COUNT)
values (hibernate_sequence.nextval, 'spring', 1);
commit;

 

Favorite 实体类及映射文件

package cn.entity;
@SuppressWarnings("serial")
public class Favorite implements java.io.Serializable {
	private Integer id;
	private String label;
	private String url;
	private String tags;
	private String desc;
	@Override
	public String toString() {
		return "Favorite [id=" + id + ", label=" + label + ", url=" + url
				+ ", tags=" + tags + ", desc=" + desc + "]";
	}
	public Favorite() {
		super();
	}
	public Favorite(String label, String url, String tags, String desc) {
		super();
		this.label = label;
		this.url = url;
		this.tags = tags;
		this.desc = desc;
	}
	public Favorite(Integer id, String label, String url, String tags,
			String desc) {
		super();
		this.id = id;
		this.label = label;
		this.url = url;
		this.tags = tags;
		this.desc = desc;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLabel() {
		return label;
	}
	public void setLabel(String label) {
		this.label = label;
	}
	public String getUrl() {
		return url;
	}
	public void setUrl(String url) {
		this.url = url;
	}
	public String getTags() {
		return tags;
	}
	public void setTags(String tags) {
		this.tags = tags;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
}

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
	<class name="cn.entity.Favorite" table="FAVORITE" schema="FAV">
		<id name="id" type="java.lang.Integer">
			<column name="F_ID" scale="0" />
			<generator class="native" />
		</id>
		<property name="label" type="java.lang.String">
			<column name="F_LABEL" length="200" not-null="true" />
		</property>
		<property name="url" type="java.lang.String">
			<column name="F_URL" length="200" not-null="true" />
		</property>
		<property name="tags" type="java.lang.String">
			<column name="F_TAGS" length="200" />
		</property>
		<property name="desc" type="java.lang.String">
			<column name="F_DESC" length="500" />
		</property>
	</class>
</hibernate-mapping>

 

Tag 实体类及映射文件

package cn.entity;
@SuppressWarnings("serial")
public class Tag implements java.io.Serializable {
	private Integer id;
	private String name;
	private Integer count;
	@Override
	public String toString() {
		return "Tag [id=" + id + ", name=" + name + ", count=" + count + "]";
	}
	public Tag() {
		super();
	}
	public Tag(String name, Integer count) {
		super();
		this.name = name;
		this.count = count;
	}
	public Tag(Integer id, String name, Integer count) {
		super();
		this.id = id;
		this.name = name;
		this.count = count;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getCount() {
		return count;
	}
	public void setCount(Integer count) {
		this.count = count;
	}
}

 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping>
	<class name="cn.entity.Tag" table="TAG" schema="FAV">
		<id name="id" type="java.lang.Integer">
			<column name="T_ID" scale="0" />
			<generator class="native" />
		</id>
		<property name="name" type="java.lang.String">
			<column name="T_NAME" length="100" not-null="true" />
		</property>
		<property name="count" type="java.lang.Integer">
			<column name="T_COUNT" scale="0" not-null="true" />
		</property>
	</class>
</hibernate-mapping>

 

BaseDao Dao类

package cn.dao;
import java.io.Serializable;
import java.util.List;
/**
 * BaseDao接口,包含常用的方法 
 */
public interface BaseDao<T> {
	/**
	 * 查询所有的记录
	 */
	List<T> findAll(Class<T> entityClass);
	/**
	 * 根据主键加载一条数据。
	 * @param id 主键
	 * @return 查找到的数据
	 */
	T get(Class<T> entityClass,Serializable id);
	/**
	 * 添加数据到数据库。
	 * @param entity 将要添加的数据
	 * @return 包含了主键信息的数据
	 */
	T add(T entity);
	/**
	 * 根据主键删除数据。
	 * @param id
	 */
	void deleteById(Class<T> entityClass,Serializable id);
	/**
	 * 更新数据。
	 * @param entity 将要更新的数据,包含主键信息
	 */
	void update(T entity);
	/**
	 * 查找数据。
	 * @param condition 查询条件
	 * @return 查询结果
	 */
	List<T> find(T condition);
	/**
	 * 查找数据。
	 * @param hql 查询语句
	 * @return 查询结果
	 */
	List<T> find(String hql);
	/**
	 * 查找数据。
	 * @param hql 查询语句 paramNames 参数名 values参数值
	 * @return 查询结果
	 */
	List<T> find(String hql, String[] paramNames, Object[] values);
}

 

package cn.dao.impl;
import java.io.Serializable;
import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import cn.dao.BaseDao;
/**
 * BaseDao 实现类
 */
public class BaseDaoImpl<T> extends HibernateDaoSupport implements BaseDao<T> {
	@Override
	public T add(T entity) {
		super.getHibernateTemplate().save(entity);
		return entity;
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<T> find(T condition) {
		return super.getHibernateTemplate().findByExample(condition);
	}
	@Override
	public void update(T entity) {
		super.getHibernateTemplate().update(entity);
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<T> find(String hql) {
		return super.getHibernateTemplate().find(hql);
	}
	@SuppressWarnings("unchecked")
	@Override
	public List<T> find(String hql, String[] paramNames, Object[] values) {
		return super.getHibernateTemplate().findByNamedParam(hql, paramNames, values);
	}
	@Override
	public T get(Class<T> entityClass, Serializable id) {
		return super.getHibernateTemplate().get(entityClass, id);
	}
	@Override
	public void deleteById(Class<T> entityClass, Serializable id) {
		super.getHibernateTemplate().delete(this.get(entityClass, id));
	}
	@Override
	public List<T> findAll(Class<T> entityClass) {
		return super.getHibernateTemplate().loadAll(entityClass);
	}
}

 

FavDAO Dao类

package cn.dao;
import java.util.List;
import cn.entity.Favorite;
/**
 * 收藏夹的DAO
 */
public interface FavDAO extends BaseDao<Favorite> {
	/**
	 * 根据指定的类型查询收藏列表
	 * @param type
	 * @return
	 */
	public List<Favorite> search(String type);
	
}

 

package cn.dao.impl;
import java.util.List;
import cn.dao.FavDAO;
import cn.entity.Favorite;
public class FavDAOImpl extends BaseDaoImpl<Favorite> implements FavDAO {
	@Override
	public List<Favorite> search(String type) {
		String hql = "from Favorite f where 1=1";
		if("-1".equals(type)){
			//-1 指全部,什么也不处理
		}else if("0".equals(type)){//0 表示未分类
			hql +="and f.tags is null or f.tags=''";
		}else if(type != null&&!"".equals(type)){
			hql+="and f.tags like '%"+type+"%'";
		}
		return super.find(hql);
	}
}

 

TagDAO Dao类

package cn.dao;
import java.util.List;
import cn.entity.Tag;
/**
 * 标签接口
 */
public interface TagDAO extends BaseDao<Tag> {
	public List<Tag> search(Tag condition);
	/**
	 * 根据标签名字查询标签
	 * @param tagName
	 * @return
	 */
	public Tag get(String tagName);
}

 

package cn.dao.impl;
import java.util.List;
import cn.dao.TagDAO;
import cn.entity.Tag;
public class TagDAOImpl extends BaseDaoImpl<Tag> implements TagDAO {
	@Override
	public Tag get(String tagName) {
		@SuppressWarnings("unchecked")
		List<Tag> rets = super.getHibernateTemplate().find("from Tag t where t.name = ?",tagName);
		if(rets.size() != 0){
			return rets.get(0);
		}
		return null;
	}
	@Override
	public List<Tag> search(Tag condition) {
		if(condition==null){
			return super.find("from Tag t order by t.name asc");
		}else{
			return super.find(condition);
		}
	}
}

 

FavBiz 业务类

package cn.biz;
import java.util.List;
import cn.entity.Favorite;
public interface FavBiz {
	public void add(Favorite fav);
	public List<Favorite> search(String type);
}

 

package cn.biz.impl;
import java.util.List;
import cn.biz.FavBiz;
import cn.biz.TagBiz;
import cn.dao.FavDAO;
import cn.entity.Favorite;
public class FavBizImpl implements FavBiz {
	private FavDAO favDAO;
	public void setFavDAO(FavDAO favDAO) {
		this.favDAO = favDAO;
	}
	private TagBiz tagBiz;
	public void setTagBiz(TagBiz tagBiz) {
		this.tagBiz = tagBiz;
	}
	@Override
	public void add(Favorite fav) {
		//往 Fav 表中加入一条记录
		favDAO.add(fav);
		String tags = fav.getTags();
		//循环处理每一条标签
		if(null != tags && !"".equals(tags.trim())){
			String[] arrTags = tags.split(",");
			if(null != arrTags && arrTags.length > 0){
				for (String tag : arrTags) {
					//调用另一个业务类的方法
					tagBiz.dealWithTag(tag);
				}
			}
		}
	}
	@Override
	public List<Favorite> search(String type) {
		return this.favDAO.search(type);
	}

}

 

TagBiz 业务类

package cn.biz;
import java.util.List;
import cn.entity.Tag;
/**
 * 标签
 *
 */
public interface TagBiz {
	/**
	 * 通过标签名字进行处理
	 * @param tagName
	 */
	public void dealWithTag(String tagName);
	public List<Tag> search(Tag condition);
}

 

package cn.biz.impl;
import java.util.List;
import cn.biz.TagBiz;
import cn.dao.TagDAO;
import cn.entity.Tag;
public class TagBizImpl implements TagBiz {
	private TagDAO tagDAO;
	public void setTagDAO(TagDAO tagDAO) {
		this.tagDAO = tagDAO;
	}
	@Override
	public void dealWithTag(String tagName) {
		Tag tag = tagDAO.get(tagName);
		//有则加 1 更新
		if(null != tag){
			tag.setCount(tag.getCount()+1);
			tagDAO.update(tag);
		}else{
			//没有则新加 1 个
			tag = new Tag();
			tag.setName(tagName);
			tag.setCount(1);
			tagDAO.add(tag);
		}
	}
	@Override
	public List<Tag> search(Tag condition) {
		return this.tagDAO.search(condition);
	}
}

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics