实现了hibernate的简单的分页了。其实很简单(一)
来源:互联网 发布:淘宝静物拍摄布光 编辑:程序博客网 时间:2024/05/13 17:27
今天终于实现了hibernate实现分页了。。把oksonic的SSH的例子做了增加,实现了查询的分页。
同时现在也把srtuts + spring + hibernate 结合的实现方法重新复习了一下,总结如下:
1 首先肯定是要把对应的数据库的表进行映射的,把影射类和表的映射XML文件放到包bo中:
包含文件AbstractUser.java User.java User.hbm.xml
表的映射配置文件如下:
<hibernate-mapping>
<class name="com.oa.data.bo.User" table="userlist">
<id name="id" type="integer">
<column name="id" />
<generator class="native"></generator>
</id>
<property name="userName" type="string">
<column name="userName" length="100" not-null="true" />
</property>
<property name="userPwd" type="string">
<column name="userPwd" length="100" not-null="true" />
</property>
</class>
</hibernate-mapping>
2 写DAO数据访问接口IUserDAO .java,放在dao包中:
package com.oa.data.dao;
import java.util.List;
import com.oa.data.bo.User;
public interface IUserDAO {
public abstract void save(User transientInstance);
public abstract void delete(User persistentInstance);
public abstract User findById(java.lang.Integer id);
public abstract List findByExample(User instance);
public abstract User merge(User detachedInstance);
public abstract void attachDirty(User instance);
public abstract void attachClean(User instance);
public abstract User findByUsername(String username);
public List findWithPage(int pageSize, int startRow);
public int counter();
}
3 写DAO数据访问实现类 UserDAO .java,放在dao.imp包中:
package com.oa.data.dao.impl;
import java.util.ArrayList;
import java.util.List;
import net.sf.hibernate.Transaction;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.LockMode;
import org.hibernate.criterion.Example;
import org.springframework.context.ApplicationContext;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import com.oa.data.bo.User;
import com.oa.data.dao.IUserDAO;
/**
* Data access object (DAO) for domain model class User.
* @see .User
* @author MyEclipse - Hibernate Tools
*/
public class UserDAO extends HibernateDaoSupport implements IUserDAO {
private static final Log log = LogFactory.getLog(UserDAO.class);
protected void initDao() {
//do nothing
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#save(com.oa.data.bo.User)
*/
public void save(User transientInstance) {
log.debug("saving User instance");
try {
this.getHibernateTemplate().saveOrUpdate(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#delete(com.oa.data.bo.User)
*/
public void delete(User persistentInstance) {
log.debug("deleting User instance");
try {
getHibernateTemplate().delete(persistentInstance);
log.debug("delete successful");
} catch (RuntimeException re) {
log.error("delete failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#findById(java.lang.Integer)
*/
public User findById( java.lang.Integer id) {
log.debug("getting User instance with id: " + id);
try {
User instance = (User) getHibernateTemplate()
.get("User", id);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#findByExample(com.oa.data.bo.User)
*/
public List findByExample(User instance) {
log.debug("finding User instance by example");
try {
List results = getSession()
.createCriteria("User")
.add(Example.create(instance))
.list();
log.debug("find by example successful, result size: " + results.size());
return results;
} catch (RuntimeException re) {
log.error("find by example failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#merge(com.oa.data.bo.User)
*/
public User merge(User detachedInstance) {
log.debug("merging User instance");
try {
User result = (User) getHibernateTemplate()
.merge(detachedInstance);
log.debug("merge successful");
return result;
} catch (RuntimeException re) {
log.error("merge failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#attachDirty(com.oa.data.bo.User)
*/
public void attachDirty(User instance) {
log.debug("attaching dirty User instance");
try {
getHibernateTemplate().saveOrUpdate(instance);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
/* (non-Javadoc)
* @see com.oa.data.dao.impl.IUserDAO#attachClean(com.oa.data.bo.User)
*/
public void attachClean(User instance) {
log.debug("attaching clean User instance");
try {
getHibernateTemplate().lock(instance, LockMode.NONE);
log.debug("attach successful");
} catch (RuntimeException re) {
log.error("attach failed", re);
throw re;
}
}
public static IUserDAO getFromApplicationContext(ApplicationContext ctx) {
return (IUserDAO) ctx.getBean("UserDAO");
}
public User findByUsername(String username) {
log.debug("getting User instance with userName: " + username);
try {
List list = getHibernateTemplate().find(
"from User as u where userName = ?", username);
if(list.size() > 0) {
User instance = (User) list.get(0);
return instance;
} else {
return null;
}
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
}
public List findWithPage(int pageSize, int startRow) {
List list=new ArrayList();
Transaction tx = null;
log.debug("ShowAllUser");
try {
org.hibernate.Query q ;
q=this.getSessionFactory().openSession().createQuery("from User");
q.setFirstResult(startRow);
q.setMaxResults(pageSize); // hibernate简单分页的设置,设置起始行和每页的记录数
list=q.list();
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public int counter() {
int counter=0;
Transaction tx = null;
log.debug("counter");
counter = ((Integer)this.getHibernateTemplate().iterate("select count(*) from User").next()).intValue();
return counter;
}
}
4 因为用到了spring,需要做DAO服务代理,所以有必要实现服务类。service包中:
package com.oa.model.service;
import java.util.List;
import com.oa.data.bo.User;
public interface IUserService {
// 验证用户是否合法,并返回一个 User 对像
public User isValidUser(String username,String password);
public List findWithPage(int pageSize, int startRow);
public int counter();
}
5 有服务接口就有实现类:service.imp包中:
package com.oa.model.service.impl;
import java.util.ArrayList;
import java.util.List;
import com.oa.data.bo.User;
import com.oa.data.dao.IUserDAO;
import com.oa.model.service.IUserService;
public class UserService implements IUserService {
private IUserDAO userDAO;
public IUserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
}
public User isValidUser(String username, String password) {
// TODO Auto-generated method stub
User user = userDAO.findByUsername(username);
if(user == null)
return null;
if(user.getUserPwd().equals(password))
return user;
return null;
}
public List findWithPage(int pageSize, int startRow) {
// TODO Auto-generated method stub
ArrayList list=new ArrayList();
list=(ArrayList) userDAO.findWithPage(pageSize,startRow);
return list;
}
public int counter() {
// TODO Auto-generated method stub
int counter=0;
counter=userDAO.counter();
return counter;
}
}
- 实现了hibernate的简单的分页了。其实很简单(一)
- 实现了hibernate的简单的分页了。其实很简单(二)
- 实现了hibernate的简单的分页了。(一)
- 实现了hibernate的简单的分页了。(二)
- [转]如果实现了PHP和MySQL链接了,PHP和MSSQL的链接其实很简单;
- struts+hibernate+spring分页的简单实现(一)
- 一个简单的“ls -al”实现(其实网上已经有很多了)
- 魔术拆穿了,其实很简单
- 简单的实现了Dijkstra,
- hibernate+spring的一个简单分页实现
- hibernate+spring的一个简单分页实现
- hibernate+spring的一个简单分页实现
- hibernate+spring的一个简单分页实现
- Android 弹幕的实现其实很简单
- shell编程其实真的很简单(一)
- XML导入程序Memo显示(花了半天搞定的,其实特简单)
- Flex编程皮肤: (3)最基础的ProgrammaticSkin都做了些什么 --- 其实很简单
- Hibernate 分页简单实现
- 监视来到的短消息例子。
- 空心!
- dz中发表新文章可以插入的接口位置
- 嵌入式系统开发工具及RTOS平台
- 信息时代嵌入式装置的通信技术
- 实现了hibernate的简单的分页了。其实很简单(一)
- UI设计注意点
- 在Ajax 应用程序中实现数据交换
- SQL数据库同步
- javascript浏览器判断函数
- 一个简单的问题
- 时间计量(毫秒)
- DataGrid 的 全选/取消全选 控制(CheckBox)
- 今天到新公司上班