?? javafishhibernatedao.java
字號(hào):
/**
*
*/
package javafish.dao.hibernate;
import java.util.List;
import java.sql.SQLException;
import javafish.model.JavaFish;
import javafish.dao.IJavaFishDAO;
import net.sf.hibernate.type.*;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.Hibernate;
import net.sf.hibernate.HibernateException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.hibernate.HibernateCallback;
import org.springframework.orm.hibernate.support.HibernateDaoSupport;
/**
* @author longjiang
* @version 1.0
* 這個(gè)類(lèi)是持久層DAO接口的具體實(shí)現(xiàn)類(lèi),這個(gè)類(lèi)將在Spring的applicationContext.xml文件定義,
* 并且作為一個(gè)屬性在業(yè)務(wù)層中注入,具體可參照applicationContext.xml文件和JavaFishServiceImpl類(lèi)
* 利用Sring提供的HibernateDaoSupport讓程序代碼繼續(xù)減少
*/
public class JavaFishHibernateDAO extends HibernateDaoSupport implements IJavaFishDAO
{
private static final Log logger = LogFactory.getLog(JavaFishHibernateDAO.class);
private static final String LOAD_USERNAME="from JavaFish as fish where fish.username= ? " ;
private static final String LOAD_UNAMEPASS="from JavaFish as fish where fish.username=? and fish.password=? ";
private static final String LOAD_COUNT="select count(*) from JavaFish as fish";
public JavaFish findById(Long id)
{
// TODO Auto-generated method stub
return (JavaFish)getHibernateTemplate().get(JavaFish.class,id);
}
public JavaFish findByUserName(String username)
{
// TODO Auto-generated method stub
return (JavaFish)getHibernateTemplate().find(LOAD_USERNAME,username);
}
public JavaFish findByUserNamePassWord(String username, String password)
{
// TODO Auto-generated method stub
Object up[]={username,password};
List l=getHibernateTemplate().find(LOAD_UNAMEPASS,up);
if(l.size()==0)
{
return null;
}
else
{
return(JavaFish)l.get(0);
}
}
//注意此方法的形式參數(shù)必須是final
public List findJavaFishInList(final String orderby,final String ascordesc,final int firstResult, final int maxResults)
{
// TODO Auto-generated method stub
return getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session s)throws HibernateException ,SQLException{
String q="from JavaFish as fish order by fish." +orderby+ " "+ascordesc;
Query query=s.createQuery(q);
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
List list = query.list();
return list;
}
});
}
public int getAllNum()
{
// TODO Auto-generated method stub
try
{
List l=getHibernateTemplate().find(LOAD_COUNT);
if(!l.isEmpty())
{
return ((Integer) l.get(0)).intValue();
}
else
{
return 0;
}
}
catch(DataAccessException ex)
{
logger.equals(ex);
return 0;
}
}
public JavaFish getJavaFish(long id) {
String q = "from JavaFish" +
" bm where bm.id = ?";
Object[] o = {
new Long(id)};
List l = this.getHibernateTemplate().find(q, o);
if (l.size() == 0) {
return null;
}
else {
return (JavaFish) l.get(0);
}
}
/*
此方法就是根據(jù)id號(hào)刪除一個(gè)持久化對(duì)象
此方法需要注意 1:void 方法不需要 return
2:我們通過(guò)getHibernateTemplate()調(diào)用的是execute()方法,
并沒(méi)有通過(guò)getHibernateTemplate()調(diào)用executeFind()方法。
*/
public void removeJavaFish(final long id)
{
// TODO Auto-generated method stub
getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session s) throws HibernateException,SQLException{
String q="from JavaFish as fish where fish.id= ? ";
Object[] o = {new Long(id)};
Type[] t = {Hibernate.LONG};
s.delete(q,o,t);
return null;
}
});
}
public JavaFish saveJavaFish(JavaFish javafish)
{
// TODO Auto-generated method stub
try
{
getHibernateTemplate().saveOrUpdate(javafish);
return javafish;
}
catch(DataAccessException ex)
{
return null;
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -