好了,廢話不多說了,接着今天早上我們的示例接着做完.
五,現在我們開始做DAO層的接口,不用多說了吧,我還是使用自己管理SessionFactory的方式來寫,沒辦法了,已經習慣了.
1、IBaseDAO.java
import org.hibernate.Session;
public interface IBaseDAO {
public Session getSession();
}
2、再寫IBaseDAO的實現類:BaseDAO.java
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.login.dao.IBaseDAO;
public class BaseDAO implements IBaseDAO {
private SessionFactory sessionFactory;
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public Session getSession() {
return sessionFactory.openSession();
}
}
3、我們現在做實體的映射
Users.java:
@SuppressWarnings("serial")
public class Users implements java.io.Serializable {
// Fields
private Integer id;
private String username;
private String password;
// Constructors
/** default constructor */
public Users() {
}
/** full constructor */
public Users(String username, String password) {
this.username = username;
this.password = password;
}
// Property accessors
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
}
<!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="org.login.vo.Users" table="users">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="username" type="java.lang.String">
<column name="username" length="50" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="50" not-null="true" />
</property>
</class>
</hibernate-mapping>
4、我們現在寫實體操作接口與實現:
IUsersDAO.java
import java.util.List;
import org.login.vo.Users;
@SuppressWarnings("unchecked")
public interface IUsersDAO {
public boolean checkLogin(Users user);
public boolean saveUser(Users user);
public boolean deleteUser(Integer id);
public boolean updateUser(Users user);
public List<Users> findAllUsers();
public Users getUserById(Integer id);
}
UsersDAO.java
import java.util.List;
import org.hibernate.Transaction;
import org.hibernate.Query;
import org.hibernate.Session;
import org.login.dao.IUsersDAO;
import org.login.vo.Users;
@SuppressWarnings("unchecked")
public class UsersDAO extends BaseDAO implements IUsersDAO {
@Override
public boolean checkLogin(Users user) {
Session session = null;
session = getSession();
String hql = "from Users u where u.username = ? and u.password = ?";
Query query = session.createQuery(hql);
query.setParameter(0, user.getUsername());
query.setParameter(1, user.getPassword());
List list = query.list();
session.close();
if (list.size()>0) {
return true;
}
return false;
}
@Override
public boolean deleteUser(Integer id) {
Transaction tx = null;
Session session = null;
try {
session = getSession();
tx = session.beginTransaction();
Users user = (Users)session.get(Users.class, id);
session.delete(user);
tx.commit();
return true;
} catch (Exception e) {
if(tx != null) tx.rollback();
// e.printStackTrace();
} finally {
session.close();
}
return false;
}
@Override
public boolean saveUser(Users user) {
Transaction tx = null;
Session session = null;
try {
session = getSession();
tx = session.beginTransaction();
session.save(user);
tx.commit();
return true;
} catch (Exception e) {
if(tx != null) tx.rollback();
// e.printStackTrace();
} finally {
session.close();
}
return false;
}
@Override
public boolean updateUser(Users user) {
Transaction tx = null;
Session session = null;
try {
session = getSession();
tx = session.beginTransaction();
session.update(user);
tx.commit();
return true;
} catch (Exception e) {
if(tx != null) tx.rollback();
// e.printStackTrace();
} finally {
session.close();
}
return false;
}
@Override
public List<Users> findAllUsers() {
List<Users> users = null;
Transaction tx = null;
Session session = null;
try {
session = getSession();
tx = session.beginTransaction();
String hsql = "from Users u";
Query query = session.createQuery(hsql);
users = query.list();
tx.commit();
return users;
} catch (Exception e) {
if(tx != null) tx.rollback();
// e.printStackTrace();
} finally {
session.close();
}
return users;
}
@Override
public Users getUserById(Integer id) {
Session session = null;
session = getSession();
String hql = "from Users u where u.id = ?";
Query query = session.createQuery(hql);
query.setParameter(0, id);
List list = query.list();
Users user = null;
if (list.size()>0) {
user = (Users)list.get(0);
}
session.close();
return user;
}
}
好了,我們這一篇就到這裏啦,下一篇請大家繼續關注我的博客連載,大家也可以先下載示例代碼先看看哈,如果有看不懂的給我留言。
下載地址:
Struts2.0+Spring2.0+Hibernate3.1登錄及增刪改查的完整演示示例下載地址:http://download.csdn.net/source/326113
以前的一個版本:Struts1.2+Spring1.2+HIbernate3.1整合登錄示例示例:http://download.csdn.net/source/323772