很多人都不了解奥运冠军被提名副县长提一条建议

善于学习的日本人,在向西方学习的过程中,不仅学习到了先进的技术,更学到了利用先进的品牌理念去和欧美企业竞争的方法。模仿柯达而进入市场的富士,在美国市场的竞争一度把柯达逼到绝境。它善于向竞争对手学习,同时也很清楚地知道竞争对手的弱点。当洛杉矶奥运会上,富士以700万美元打败柯达,成为这一届奥运会的赞助商时,谁会想起它是“模仿”柯达起家的?
“跟随”的技巧所在
&&& “现在提到仿造其他品牌,更多的是知道该品牌的外观,而非本质。这对企业来说不是个聪明的做法。”汪德宏说,“虽然国内有些品牌已经遭到了起诉,但合法仿造产品和非法仿冒产品之间的分界线并不明朗。在这个灰色地带中,核心技术的作用相当关键。”
&&& 曹成举例,许多公司从外部买入专门技术和创意来帮助其开发新产品,而非依靠公司内部的人才。制药公司从生物技术初创公司购得新药产权,大型软件公司则并购小的软件公司。这不仅为其提供了产品开发的创意,而且使其获得专门技术。
&&& 在他看来,新兴市场中成功走这条路的公司之一便是索尼公司。1953年,索尼从西电公司获得助听器晶体管的使用许可权(并获赠令人垂涎的贝尔实验室晶体管技术手册的复本)。约翰?内森所著的《索尼的私人生活》一书,叙述了索尼工程师最终将晶体管用于生产第一款袖珍收音机的故事。曹成说:“中国企业更多地应该进行这样的‘跟随’而非品牌的外观。”
&&& 高旭认为中国企业在获取技术上一直不太精明。许多公司未将现有成果与自己的创意相结合,反而掉入了开发产品时一味求新而从零做起的陷阱。他表示:“他们不太擅长对研发成果进行商业化利用。他们试图完全靠自己,每件事都自己做。”
&&& 在仿造品牌的问题上,汪德宏这样总结:“可以模仿别人的产品和技术,但一定要为自己特有的品牌服务。这种模仿才是企业发展的长久之计。”
&&& 事实上,在核心技术和品牌方面,中国已经有了一个比较成功的例子。奇瑞公司被誉为“在我国汽车生产企业中,第一个到国外合资建厂、第一个到国外收取品牌转让费的企业”。这源于奇瑞坚持构建自主研发体系、打造自主品牌的发展之路。
&&& “奇瑞QQ虽然被指抄袭通用汽车雪佛兰Spark的外形,但无论在技术上还是在外形上,奇瑞QQ都取得了很大的市场成就,最重要的是‘奇瑞’的品牌,完全属于中国人自己的品牌。”汪德宏表示。
&&& 对于奇瑞汽车的品牌,艾丰表示:“过去我们思维的障碍就在于只看到一条线,只看见核心技术对品牌的支持作用,没有看到我有了自主品牌,会对核心技术的发展有很大的促进作用。我觉得奇瑞在这方面应该说不仅是从理论上,而是从实践上解决了这个问题。”
&&& 在国际市场上,奇瑞不仅以我为主整合资源,打造奇瑞品牌,更注意消化吸收、培育自己的研发能力。奇瑞也已委托欧洲供应商,包括另一家意大利设计公司,帮助其生产一系列新车型,以便从2007年开始在美国销售。
&&& “无论是模仿也好,创新也好,中国企业要真正打造出属于自己的品牌来,最重要的是要善于把握当地市场的消费特征,这是根本的竞争力。&&&&[3]&&
阅读:人次
上一篇文章: 下一篇文章:
培训超市& (5000多套光盘)& 上一页 1
锁定老帖子
该帖已经被评为新手帖
等级: 初级会员
来自: 长沙
发表时间:&&
basedao接口:
import java.io.S
import java.util.L
import org.hibernate.criterion.C
import org.hibernate.criterion.O
public interface IDAO&T,ID extends Serializable& {
* 查询类clazz的所有对象.
* @param clazz
the type of objects (a.k.a. while table) to get data from
* @return List of populated objects
public List&T& getObjects(Class&T& clazz);
* 根据类名和主键得到一个对象.
* @param clazz
model class to lookup
* @param id
the identifier (primary key) of the class
* @return a populated object
* @see org.springframework.orm.ObjectRetrievalFailureException
public Object getObject(Class&T& clazz, Serializable id);
* 插入一个对象.
* @param o
the object to save
public Object save(Object o);
* 持久化一个对象,包括更新或插入.
* @param o
the object to save
public Object saveOrUpdate(Object o);
* 更新一个对象.
* @param object
public Object update(Object object);
* 根据类和主键,删除一个对象.
* @param clazz
model class to lookup
* @param id
the identifier (primary key) of the class
public void removeObject(Class&T& clazz, Serializable id);
* 删除一个对象.
public void removeObject(Object object);
* 批量删除对象.
* @param clazz
* @param ids
public void removeBatch(Class&T& clazz, Serializable[] ids);
* 根据HQL查询设置.
* @param filter
public List&T& find(String query);
* 根据查询设置得到查询结果
* @param query
public List&T& find(QueryBuilder&T& queryBuilder);
* @param currentPage
* @param pageSize
* @param queryBuilder
@SuppressWarnings("unchecked")
public PageModel find(Integer currentPage, Integer pageSize, QueryBuilder queryBuilder);
* 更新对象.
* @param object
需要更新的对象.
public void refresh(Object object);
* 更新到数据库中.
public void flush();
* 根据查询设置,得到分页的数据结果集.
* @param query
* @param start
* @param length
public List&T& find(String query, Integer start, Integer length);
* @param queryBulider
* @param currentPage
* @param pageSize
public List&T& find(QueryBuilder&T& queryBulider, Integer currentPage, Integer pageSize);
* 根据条件查询.
* @param hql
* @param param
* @return 查询结果.
public List&T& find(String hql, Serializable param);
* 根据条件查询相关结果.
* @param clazz
要查询的对象.
* @param criterions
* @return 查询结果.
public List&T& getList(Class&T& clazz, Criterion[] criterions);
* @param clazz
* @param criterions
public Object getFirst(Class&T& clazz, Criterion[] criterions);
* @param class1
* @param 条件查询数组
* @param 排序
public List&T& getList(Class&T& class1, Criterion[] criterions,
Order[] orders);
* @param className
* @param criterions
public List&T& getList(String className, Criterion[] criterions);
* @param className
* @param sequenceName
public List&T& getNextId(String sequenceName);
* @param qb
public int count(QueryBuilder&T& qb);
public int count(String hql);
* 执行SQL语句, 返回影响结果的行数
* @param sql
public int updateBySql(String sql);
* 批量修改对象
* @param objs
* @param batchSize
public void updateBatch(List&T& objs, int batchSize);
查询类接口:
import java.io.S
import java.util.C
import java.util.L
import java.util.M
import org.hibernate.criterion.C
import org.hibernate.criterion.DetachedC
import org.hibernate.criterion.MatchM
import org.hibernate.criterion.O
* 查询过滤类.
public interface QueryBuilder&T& extends Serializable {
public void setDc(DetachedCriteria ec);
public abstract QueryBuilder&T& clone();
* 判断是否相等
* @param propertyName
* @param value
public abstract QueryBuilder&T& eq(String propertyName, Object value);
* 判断是否匹配
* @param propertyName
* @param value
public abstract QueryBuilder&T& like(String propertyName, Object value);
* 根据matchMode判断是否匹配
* @param propertyName
* @param value
* @param matchMode
public abstract QueryBuilder&T& like(String propertyName, String value,
MatchMode matchMode);
* 根据matchMode判断是否匹配
* @param propertyName
* @param value
* @param matchMode
public abstract QueryBuilder&T& ilike(String propertyName, String value,
MatchMode matchMode);
* 判断时候不等
* @param propertyName
* @param value
public abstract QueryBuilder&T& ilike(String propertyName, Object value);
* 判断是否大于
* @param propertyName
* @param value
public abstract QueryBuilder&T& gt(String propertyName, Object value);
* 判断是否小于
* @param propertyName
* @param value
public abstract QueryBuilder&T& lt(String propertyName, Object value);
* 判断是否小于等于
* @param propertyName
* @param value
public abstract QueryBuilder&T& le(String propertyName, Object value);
* 判断是否大于等于
* @param propertyName
* @param value
public abstract QueryBuilder&T& ge(String propertyName, Object value);
* @param propertyName
* @param value
public QueryBuilder&T& notEq(String propertyName, Object value);
* 判断是否在给定的区间里
* @param propertyName
* @param lo
* @param hi
public abstract QueryBuilder&T& between(String propertyName, Object lo,
Object hi);
* 判断是否在给定的数组里
* @param propertyName
* @param values
public abstract QueryBuilder&T& in(String propertyName, Object[] values);
* 判断是否在给定的集合里
* @param propertyName
* @param values
public abstract QueryBuilder&T& in(String propertyName, Collection&T& values);
* 判断是否为空
* @param propertyName
public abstract QueryBuilder&T& isNull(String propertyName);
* 判断属性值是否相等
* @param propertyName
* @param otherPropertyName
public abstract QueryBuilder&T& eqProperty(String propertyName,
String otherPropertyName);
* 判断属性值是否小于
* @param propertyName
* @param otherPropertyName
public abstract QueryBuilder&T& ltProperty(String propertyName,
String otherPropertyName);
* 判断属性值是否小于等于
* @param propertyName
* @param otherPropertyName
public abstract QueryBuilder&T& leProperty(String propertyName,
String otherPropertyName);
* 判断是否不等于
* @param propertyName
public abstract QueryBuilder&T& isNotNull(String propertyName);
* @param propertyNameValues
public abstract QueryBuilder&T& allEq(Map&T, T& propertyNameValues);
* 添加排序
* @param orderBy
public abstract QueryBuilder&T& addOrderBy(Order orderBy);
* 查询条件
* 不建议使用
* @param criterion
public abstract QueryBuilder&T& addCriterion(Criterion criterion);
public abstract List&Order& getOrderBys();
public abstract DetachedCriteria getDetachedCriteria();
public abstract Class&T& getClazz();
basedao 实现类:
import java.io.ByteArrayInputS
import java.io.ByteArrayOutputS
import java.io.F
import java.io.FileInputS
import java.io.FileNotFoundE
import java.io.IOE
import java.io.InputS
import java.io.ObjectInputS
import java.io.ObjectOutputS
import java.io.S
import java.sql.SQLE
import java.util.L
import mons.logging.L
import mons.logging.LogF
import org.hibernate.C
import org.hibernate.HibernateE
import org.hibernate.Q
import org.hibernate.S
import org.hibernate.criterion.C
import org.hibernate.criterion.DetachedC
import org.hibernate.criterion.O
import org.hibernate.criterion.P
import org.springframework.orm.hibernate3.HibernateC
import org.springframework.orm.hibernate3.support.HibernateDaoS
import org.springframework.util.A
import mon.utils.ObjectWriteorR
* 基本实现类
* @spring.property name="sessionFactory" ref="sessionFactory" type="bean"
注入sessionFactory
public class BaseDAOHibernate&T& extends HibernateDaoSupport implements
IDAO&T, Serializable& {
@SuppressWarnings("unchecked")
public PageModel&T& find(final Integer currentPage, final Integer pageSize,
final QueryBuilder qb) {
QueryBuilder newqb =
if (qb != null) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectWriteorRead.writeObject(qb, byteOut);// 序列化对象, 这里需要用到对象拷贝,一直没有好的办法,用克隆的方法没效果,所有暂时也不考虑效率了,这里希望大家提点建议
ByteArrayInputStream bytein = new ByteArrayInputStream(byteOut
.toByteArray());
newqb = (QueryBuilder) ObjectWriteorRead.readObject(bytein);// 还原对象,以实现拷贝对象
Integer total = this.count(newqb);
PageModel pm = new PageModel();
pm.setDatas(this.find(qb, currentPage, pageSize));
pm.setTotal(total);
pm.setPagesize(pageSize);
pm.setTotalPage((total + pageSize - 1) / pageSize);
pm.setCurrenPage((currentPage));
protected final Log log = LogFactory.getLog(getClass());
public BaseDAOHibernate() {
System.out.println("creating BaseDAOHibernate... ");
@SuppressWarnings("unchecked")
public List&T& getObjects(Class&T& clazz) {
Assert.notNull(clazz, "要查询的对象类型不能为空!");
return getHibernateTemplate().loadAll(clazz);
public Object getObject(Class&T& clazz, Serializable id) {
Assert.notNull(clazz, "要查询的对象类型不能为空!");
Assert.notNull(id, "要查询的对象主键不能为空!");
return getHibernateTemplate().get(clazz, id);
public Object save(Object o) {
Assert.notNull(o, "要保存的对象不能为空!");
getHibernateTemplate().save(o);
public Object saveOrUpdate(Object o) {
Assert.notNull(o, "要保存或更新的对象类型不能为空!");
getHibernateTemplate().saveOrUpdate(o);
public Object update(Object object) {
Assert.notNull(object, "要更新的对象类型不能为空!");
getHibernateTemplate().update(object);
@SuppressWarnings("unchecked")
public void removeObject(Class&T& clazz, Serializable id) {
Assert.notNull(clazz, "要移除的对象类型不能为空!");
Assert.notNull(id, "要移除的对象主键不能为空!");
Object object = getObject(clazz, id);
if (object != null) {
getHibernateTemplate().delete(object);
public void removeObject(Object object) {
Assert.notNull(object, "要移除的对象不能为空!");
getHibernateTemplate().delete(object);
public void removeBatch(final Class&T& clazz, final Serializable[] ids) {
Assert.notNull(clazz, "要移除的对象类型不能为空!");
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
for (int i = 0; i & ids. i++) {
Object obj = session.load(clazz, ids[i]);
if (obj != null) {
session.delete(obj);
log.warn("无法删除主键为:" + ids[i] + "的" + clazz.getName());
@SuppressWarnings("unchecked")
public List&T& find(String query) {
Assert.notNull(query, "查询语句不能为空!");
return getHibernateTemplate().find(query);
public void refresh(Object object) {
getHibernateTemplate().refresh(object);
public void flush() {
getHibernateTemplate().flush();
public List&T& find(String query, Integer start, Integer length) {
return getObjects(query, start, length);
@SuppressWarnings("unchecked")
public List&T& find(final QueryBuilder queryBuilder,
final Integer currentPage, final Integer pageSize) {
if (queryBuilder != null) {
return (List&T&) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
DetachedCriteria dc = queryBuilder
.getDetachedCriteria();
for (Object or : queryBuilder.getOrderBys()) {
Order order = (Order)
dc.addOrder(order);
if (currentPage != null && pageSize != null) {
Criteria crit = dc
.getExecutableCriteria(session);
crit.setFirstResult((currentPage - 1)
* pageSize);
crit.setMaxResults(pageSize);
return dc.getExecutableCriteria(session).list();
@SuppressWarnings("unchecked")
public List&T& getObjects(final String queryString, final int position,
final int length) {
Assert.notNull(queryString, "查询语句不能为空!");
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(queryString);
query.setFirstResult(position);
query.setMaxResults(length);
List lt = query.list();
* (非 Javadoc)
public List&T& find(final QueryBuilder&T& queryBuilder) {
if (queryBuilder != null) {
return this.find(queryBuilder, null, null);
* @param hql
* @param param
@SuppressWarnings("unchecked")
public List&T& find(final String hql, final Serializable param) {
Assert.notNull(hql, "查询语句不能为空!");
Assert.notNull(param, "查询参数不能为空!");
return getHibernateTemplate().find(hql, param);
* @param clazz
* @param criterions
@SuppressWarnings("unchecked")
public List&T& getList(final Class&T& clazz, final Criterion[] criterions) {
Assert.notNull(clazz, "要查询的类不能为空!");
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria query = session.createCriteria(clazz);
if (criterions != null && criterions.length & 0) {
for (int i = 0; i & criterions. i++) {
query.add(criterions[i]);
return query.list();
* 得到查到的最前一个对象.
* @param clazz
* @param criterions
* @return 查询得到的结果.
public Object getFirst(Class&T& clazz, Criterion[] criterions) {
List&T& lt = getList(clazz, criterions);
if (lt != null && !lt.isEmpty()) {
return lt.get(0);
* @param clazz
* @param criterions
* @param orders
@SuppressWarnings("unchecked")
public List&T& getList(final Class&T& clazz, final Criterion[] criterions,
final Order[] orders) {
Assert.notNull(clazz, "要查询的类不能为空!");
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(clazz);
if (criterions != null && criterions.length & 0) {
for (int i = 0; i & criterions. i++) {
criteria.add(criterions[i]);
if (orders != null && orders.length & 0) {
for (int i = 0; i & orders. i++) {
criteria.addOrder(orders[i]);
return criteria.list();
* @param className
* @param criterions
@SuppressWarnings("unchecked")
public List&T& getList(final String className, final Criterion[] criterions) {
Assert.notNull(className, "要查询的类名不能为空");
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria =
criteria = session.createCriteria(Class.forName(className));
} catch (ClassNotFoundException e) {
"$HibernateCallback.doInHibernate(Session) - 找不到类错误 - e=" + e, e); //$NON-NLS-1$
throw new IllegalArgumentException("传入的类名是错误的,classname = "
+ className);
if (criterions != null && criterions.length & 0) {
for (int i = 0; i & criterions. i++) {
criteria.add(criterions[i]);
return criteria.list();
* @param className
* @param sequenceName
@SuppressWarnings("unchecked")
public List&T& getNextId(final String sequenceName) {
return getHibernateTemplate().executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query =
query = session.createSQLQuery("select " + sequenceName
+ ".nextval from dual");
return query.list();
public int count(final String hql) {
return ((Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
return query.setProperties(Projections.rowCount())
.uniqueResult();
}, true)).intValue();
* @param qb
public int count(final QueryBuilder&T& queryBuilder) {
return ((Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
System.out.println(session.isOpen());
DetachedCriteria dc = queryBuilder
.getDetachedCriteria();
Criteria ct = dc.getExecutableCriteria(session);
return ct.setProjection(Projections.rowCount())
.uniqueResult();
}, true)).intValue();
public int updateBySql(final String sql) {
super.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
int iRet = session.createSQLQuery(sql).executeUpdate();
return -1;
public void updateBatch(final List&T& objs, final int batchSize) {
super.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
int count = 0;
for (Object o : objs) {
session.update(o);
if (++count % batchSize == 0) {
session.flush();
session.clear();
查询实现类:
import java.io.S
import java.util.ArrayL
import java.util.C
import java.util.L
import java.util.M
import mons.lang.builder.EqualsB
import mons.lang.builder.HashCodeB
import mons.lang.builder.ToStringB
import mons.lang.builder.ToStringS
import org.hibernate.criterion.C
import org.hibernate.criterion.DetachedC
import org.hibernate.criterion.MatchM
import org.hibernate.criterion.O
import org.hibernate.criterion.R
* 使用hibernate进行查询的实现.
public class HibernateQueryBuilder&T& implements QueryBuilder&T&, Serializable,
Cloneable {
@SuppressWarnings("unchecked")
public HibernateQueryBuilder&T& clone() {
HibernateQueryBuilder&T& qb =
qb = (HibernateQueryBuilder&T&) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
private static final long serialVersionUID = -7633672L;
private DetachedCriteria dc =
private List&Order& orderLists = new ArrayList&Order&();
private Class&T& clazz =
public HibernateQueryBuilder(Class&T& clazz) {
this.clazz =
dc = DetachedCriteria.forClass(clazz);
public Class&T& getClazz() {
public void setDc(DetachedCriteria dc) {
public QueryBuilder&T& eq(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.eq(propertyName, value));
* @param propertyName
* @param value
public QueryBuilder&T& notEq(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.ne(propertyName, value));
private boolean isNotEmpty(Object value) {
return value != null && value.toString().trim().length() & 0;
public QueryBuilder&T& like(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.like(propertyName, value));
public QueryBuilder&T& like(String propertyName, String value,
MatchMode matchMode) {
if (isNotEmpty(value)) {
dc.add(Restrictions.like(propertyName, value, matchMode));
public QueryBuilder&T& ilike(String propertyName, String value,
MatchMode matchMode) {
if (isNotEmpty(value)) {
dc.add(Restrictions.ilike(propertyName, value, matchMode));
public QueryBuilder&T& ilike(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.ilike(propertyName, value));
public QueryBuilder&T& gt(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.gt(propertyName, value));
public QueryBuilder&T& lt(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.lt(propertyName, value));
public QueryBuilder&T& le(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.le(propertyName, value));
public QueryBuilder&T& ge(String propertyName, Object value) {
if (isNotEmpty(value)) {
dc.add(Restrictions.ge(propertyName, value));
public QueryBuilder&T& between(String propertyName, Object lo, Object hi) {
if (isNotEmpty(lo) && isNotEmpty(hi)) {
dc.add(Restrictions.between(propertyName, lo, hi));
} else if (isNotEmpty(lo)) {
dc.add(Restrictions.ge(propertyName, lo));
} else if (isNotEmpty(hi)) {
dc.add(Restrictions.le(propertyName, hi));
public QueryBuilder&T& in(String propertyName, Object[] values) {
if (values != null && values.length & 0) {
dc.add(Restrictions.in(propertyName, values));
public QueryBuilder&T& in(String propertyName, Collection&T& values) {
if (values != null && values.size() & 0) {
dc.add(Restrictions.in(propertyName, values));
public QueryBuilder&T& isNull(String propertyName) {
dc.add(Restrictions.isNull(propertyName));
public QueryBuilder&T& eqProperty(String propertyName,
String otherPropertyName) {
dc.add(Restrictions.eqProperty(propertyName, otherPropertyName));
public QueryBuilder&T& ltProperty(String propertyName,
String otherPropertyName) {
dc.add(Restrictions.ltProperty(propertyName, otherPropertyName));
public QueryBuilder&T& leProperty(String propertyName,
String otherPropertyName) {
dc.add(Restrictions.leProperty(propertyName, otherPropertyName));
public QueryBuilder&T& isNotNull(String propertyName) {
dc.add(Restrictions.isNotNull(propertyName));
public QueryBuilder&T& allEq(Map&T, T& propertyNameValues) {
dc.add(Restrictions.allEq(propertyNameValues));
public QueryBuilder&T& addOrderBy(Order orderBy) {
orderLists.add(orderBy);
public DetachedCriteria getDetachedCriteria() {
public List&Order& getOrderBys() {
return orderL
public QueryBuilder&T& addCriterion(Criterion criterion) {
if (criterion != null) {
dc.add(criterion);
@SuppressWarnings("unchecked")
public boolean equals(Object object) {
if (!(object instanceof HibernateQueryBuilder)) {
HibernateQueryBuilder&T& rhs = (HibernateQueryBuilder&T&)
return new EqualsBuilder().append(this.clazz, rhs.clazz).isEquals();
public int hashCode() {
return new HashCodeBuilder(-, ).append(this.clazz)
.toHashCode();
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("orderLists", this.orderLists).append("clazz",
this.clazz).toString();
import java.util.L
* @author ai5qiangshao
* @version 创建时间:Aug 5, :42 PM
* @Package mon
* @Description 类说明
public class PageModel&T& {
private List&T&
private Integer totalPage=1;
private Integer currenPage=1;
public Integer getCurrenPage() {
return currenP
public void setCurrenPage(Integer currenPage) {
this.currenPage = currenP
public Integer getPagesize() {
public void setPagesize(Integer pagesize) {
this.pagesize =
public List&T& getDatas() {
public void setDatas(List&T& datas) {
this.datas =
public Integer getTotal() {
public void setTotal(Integer total) {
this.total =
public Integer getTotalPage() {
return totalP
public void setTotalPage(Integer totalPage) {
this.totalPage = totalP
我的分页标签:支持条件筛选,因为每次翻页都是做的表单提交,因此再jsp页面使用时
需要用表单包围;
package org.ywq.
import java.io.IOE
import javax.servlet.jsp.JspE
import javax.servlet.jsp.JspW
import javax.servlet.jsp.tagext.SimpleTagS
* @author ai5qiangshao E-mail:
* @version 创建时间:Aug 7, :29 AM
* @Package org.ywq.tag
* @Description 类说明
public class PageTag extends SimpleTagSupport {
public PageTag() {
private String currentP
private String totalP
private String theme = "both";
public String getCurrentPage() {
return currentP
public void setCurrentPage(String currentPage) {
this.currentPage = currentP
public String getTotalPage() {
return totalP
public void setTotalPage(String totalPage) {
this.totalPage = totalP
public String getUrl() {
public void setUrl(String url) {
this.url =
public String submitAction() {
StringBuffer bf = new StringBuffer();
bf.append("&script language=\"");
bf.append("JavaScript");
bf.append("\"").append("&").append("\n");
bf.append("function topage(");
bf.append("action");
bf.append("){");
bf.append("\n");
bf.append("var form = document.forms[0];").append("\n");
bf.append("form.action=");
bf.append("\n");
bf.append("form.submit();");
bf.append("}\n");
bf.append("&/script&");
return bf.toString();
public void doTag() throws JspException, IOException {
JspWriter out = super.getJspContext().getOut();
StringBuffer bf = new StringBuffer();
bf.append(this.submitAction());
if (theme.equals("both")) {
bf.append(this.text());
} else if (theme.equals("number")) {
bf.append(this.number());
} else if (theme.equals("text")) {
bf.append(this.text());
//System.out.println(bf.toString());
out.println(bf.toString());
private String number() {
String pageNoStr = getPageNoStr();
System.out.println(pageNoStr);
StringBuffer str = new StringBuffer();
Integer totalInt = Integer.valueOf(totalPage);
str.append("[ ");
if (totalInt == 1) {
str.append("&strong&1&/strong& ");
int cpageInt = Integer.parseInt(this.getCurrentPage());
System.out.println(cpageInt + "============当前页");
int v = (cpageInt - 4) & 0 ? (cpageInt - 4) : 1;
int v1 = (cpageInt + 4) & totalInt ? (cpageInt + 4) : totalI
if (v1 == totalInt) {
v = totalInt - 6;
v = (v &= 0 ? 1 : v); // 如果为负数,则修改为1
} else if (v == 1 && v1 & totalInt) {
v1 = totalInt & 6 ? 6 : totalI
// 10个为一组显示
for (int i = i &= v1; i++) {
if (cpageInt == i) { // 当前页要加粗显示
str.append("&strong&" + i + "&/strong& ");
str.append("&a href=\"").append("javascript:").append("topage('" + url + pageNoStr + i + "')");
str.append("\"").append("&").append(i).append("&/a&");
str.append("&");
str.append("]");
return str.toString();
private String text() {
StringBuilder str = new StringBuilder();
String pageNoStr = getPageNoStr();
int cpageInt = Integer.parseInt(currentPage);
if (currentPage.equals(totalPage)) {
if ("1".equals(totalPage)) {
str.append("[第 " + currentPage + " 页]");
str.append(" [共 " + totalPage + " 页]");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + 1 + "')");
str.append("\"").append("&").append("[首页]").append("&/a&")
.append("&&");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + (cpageInt - 1) + "')");
str.append("\"").append("&").append("[上一页]").append("&/a&")
.append("&&");
if (this.theme.equals("both")) {
str.append(this.number());
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + totalPage + "')");
str.append("\"").append("&").append("[末页]").append("&/a&")
.append("&&");
if ("1".equals(currentPage)) {
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + 1 + "')");
str.append("\"").append("&").append("[首页]").append("&/a&")
.append("&&");
if (this.theme.equals("both")) {
str.append(this.number());
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + (cpageInt + 1) + "')");
str.append("\"").append("&").append("[下一页]").append("&/a&")
.append("&&");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + totalPage + "')");
str.append("\"").append("&").append("[末页]").append("&/a&")
.append("&&");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + 1 + "')");
str.append("\"").append("&").append("[首页]").append("&/a&")
.append("&&");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + (cpageInt - 1) + "')");
str.append("\"").append("&").append("[上一页]").append("&/a&")
.append("&&");
if (this.theme.equals("both")) {
str.append(this.number());
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + (cpageInt + 1) + "')");
str.append("\"").append("&").append("[下一页]").append("&/a&")
.append("&&");
str.append("&a href=\"").append("javascript:").append(
"topage('" + url + pageNoStr + totalPage + "')");
str.append("\"").append("&").append("[末页]").append("&/a&")
.append("&&");
return str.toString();
public static void main(String[] args) {
PageTag tag = new PageTag();
tag.setCurrentPage("2");
tag.setTotalPage("30");
tag.setUrl("http://localhost:8080/test.do");
tag.setTheme("text");
System.out.println(tag.text());
public String getTheme() {
public void setTheme(String theme) {
this.theme =
public String getPageNoStr() {
if (url.indexOf("?") != -1) {
return "&pageNo=";
return "?pageNo=";
&?xml version="1.0" encoding="ISO-8859-1" ?&
&!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"/dtd/web-jsptaglibrary_1_2.dtd"&
&tlib-version&1.0&/tlib-version&
&jsp-version&1.2&/jsp-version&
&short-name&page&/short-name&
&uri&/page&/uri&
&display-name&page&/display-name&
&name&pg&/name&
&tag-class&org.ywq.tag.PageTag&/tag-class&
&body-content&empty&/body-content&
&attribute&
&name&currentPage&/name&
&required&true&/required&
&rtexprvalue&true&/rtexprvalue&
&/attribute&
&attribute&
&name&totalPage&/name&
&required&true&/required&
&rtexprvalue&true&/rtexprvalue&
&/attribute&
&attribute&
&name&url&/name&
&required&true&/required&
&/attribute&
&attribute&
&name&theme&/name&
&required&false&/required&
&rtexprvalue&true&/rtexprvalue&
&/attribute&
action里代码日下:
String strnum=request.getParameter("pageNo");
System.out.println(strnum);
Integer page = Integer.parseInt(strnum==null?"1":strnum);
String where=((DynaActionForm)form).getString("query");
System.out.println(where+"===========");
request.setAttribute("pageModel", userService.list(page, 5,where));
return mapping.findForward("list");
jsp页面使用如下:
&%@ page language="java" import="java.util.*" pageEncoding="GB18030"%&
&%@ taglib prefix="page" uri="/WEB-INF/page.tld"%&
&%@ taglib prefix="c" uri="/jsp/jstl/core"%&
&%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%&
&%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%&
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
&!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&
&title&My JSP 'pagesplit.jsp' starting page&/title&
&c:forEach var="user" items="${pageModel.datas}"&
${user.uid }
${user.uname }
${user.usex }
${user.uage }
&/c:forEach&
&c:if test="${! empty pageModel.datas}"&
&html:form action="user/userManager.do?method=list" method="post"&
&html:text property="query" /&
&page:pg url="/SSH/user/userManager.do?method=list"
totalPage="${pageModel.totalPage}"
currentPage="${pageModel.currenPage}"&&/page:pg&
&/html:form&
分页效果2种样式:
如下:
首页 上一页& 下一页 1 2 3 4 5 6.... 下一页 末页
或者是只显示数字, 或者是文字
还有就是关于怎么使用查询类
在业务bean 里 这样写
继承basedao 或者是注入:
public PageModel&User& list(Integer currPage, Integer pageSize,String where) {
QueryBuilder&User& qb = new HibernateQueryBuilder&User&(User.class)
.addOrderBy(Order.asc("uid"));
qb.like("uname", "%"+where+"%");//需要的条件都可以再这里点出来(如in like not in order by .....)
return dao.find(currPage, pageSize, qb);
还忘记一点了:
就是basedao实现类里还引用了一个类,序列化,反序列化方法//主要是为了拷贝出一份QueryBuilder
一直没有好的方法来实现对象拷贝,希望大家指点下
package mon.
import java.io.ByteArrayInputS
import java.io.ByteArrayOutputS
import java.io.IOE
import java.io.InputS
import java.io.ObjectInputS
import java.io.ObjectOutputS
import java.io.OutputS
import mon.QueryB
* @author ai5qiangshao E-mail:
* @version 创建时间:Aug 9, :15 PM
* @Package mon.utils
* @Description 类说明
public class ObjectWriteorRead {
public static void writeObject(Object o) {
ObjectWriteorRead.writeObject(o, null);
public static void writeObject(Object o, OutputStream output) {
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(
output == null ? byteOut : output);
out.writeObject(o);
} catch (IOException e) {
e.printStackTrace();
public static Object readObject(InputStream input) {
Object o =
ObjectInputStream in = new ObjectInputStream(input);
o = in.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
等级: 初级会员
来自: 长沙
发表时间:&&
晕 第一次发帖 没人回复。。 大家给点建议。。 这次发帖主要是想解决java里的对象拷贝 ,一直没找到好的方法,只能勉强要下序列化。。 哎& 效率那叫一个低啊。
,做java没多久 .net 区的
请登录后投票
来自: 北京
发表时间:&&
鼓励一下。虽然暂时用不上。
请登录后投票
shiren1118
等级: 初级会员
来自: 吉林
发表时间:&&
提个变态要求如果不用spring呢没有HibernateDaoSupport 你的东西怎么办
请登录后投票
来自: 广州
发表时间:&&
很不错,考虑的比较完善!
请登录后投票
发表时间:&&
HibernateDaoSupport及相关的代码copy过来就ok了
shiren1118 写道提个变态要求
如果不用spring呢
没有HibernateDaoSupport 你的东西怎么办
请登录后投票
等级: 初级会员
来自: 广州
发表时间:&&
第一感觉,好长!!!
贴几个核心的就行了,其他的打包上传好了。。
请登录后投票
等级: 初级会员
来自: 长沙
发表时间:&&
zhxing 写道第一感觉,好长!!!
贴几个核心的就行了,其他的打包上传好了。。
不好意思 第一次发帖。。
请登录后投票
等级: 初级会员
来自: 大连
发表时间:&&
把源码和Demo上传下呗。
请登录后投票
等级: 初级会员
来自: 长沙
发表时间:&&
最后修改:
应大家的要求 把代码上传 ,包需要自己导入。
下载次数: 772
请登录后投票
& 上一页 1
跳转论坛:移动开发技术
Web前端技术
Java企业应用
编程语言技术

我要回帖

更多关于 给公司提建议怎么写 的文章

 

随机推荐