1 项目框架图
框架补充: 业务层开发者,应该使用Junit测试开发结果
2 通过接口调用
①接口类
public interface BaseInterface {
public Object
findById(Class clazz, java.io.Serializable id);
}
public interface UserServiceInter extends BaseInterface {
public Users
checkUser(Users user) ;
}
②Service类
public abstract class BaseService implements BaseInterface {
public Object
findById(Class clazz, Serializable id) {
return HibernateUtil.findById(clazz, id);
}
}
public class UsersService extends BaseService implements UserServiceInter {
public Users
checkUser(Users user) {
String hql =
"from Users where userid=? and userpwd=?";
String paras[] = {user.getUserid()+
"", MyTools.MD5(user.getUserpwd())};
List<Users> list = HibernateUtil.executeQuery(hql, paras);
if(list.size()==
0) {
return null;
}
else {
return list.get(
0);
}
}
}
③Action中接口的使用
public class LoginAction extends DispatchAction {
public ActionForward
login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
UserForm userForm = (UserForm) form;
UserServiceInter userServiceInter =
new UsersService();
Users user =
new Users();
user.setUserid(Integer.parseInt(userForm.getUserid()));
user.setUserpwd(userForm.getUserpwd());
user = userServiceInter.checkUser(user);
if(user!=
null) {
request.getSession().setAttribute(
"userinfo", user);
return mapping.findForward(
"loginok");
}
else {
return mapping.findForward(
"goLoginUi");
}
}
}
3 Hibernate工具类+showObjectsById
public final
class HibernateUtil {
private static SessionFactory sessionFactory =
null;
private static ThreadLocal<Session> threadLoacal =
new ThreadLocal<Session>();
private HibernateUtil() {}
static {
sessionFactory =
new Configuration().configure().buildSessionFactory();
}
public static Session
openSession() {
return sessionFactory.openSession();
}
public static Session
getCurrentSession() {
Session session = threadLoacal.
get();
if(session==
null) {
session = sessionFactory.openSession();
threadLoacal.
set(session);
}
return session;
}
public static Object
findById(Class clazz, java.io.Serializable id) {
Session session =
null;
Transaction ts =
null;
Object obj =
null;
try {
session = openSession();
ts = session.beginTransaction();
obj = session.load(clazz, id);
ts.commit();
}
catch (Exception e) {
if(ts!=
null) {
ts.rollback();
}
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally {
if(session!=
null && session.isOpen()) {
session.close();
}
}
return obj;
}
public static List
executeQueryByPage(String hql, String[] paras,
int pageSize,
int pageNow) {
Session session =
null;
List list =
null;
try {
session = openSession();
Query query = session.createQuery(hql);
if(paras!=
null && paras.length>
0) {
for(
int i=
0; i<paras.length; i++) {
query.setString(i, paras[i]);
}
}
query.setFirstResult((pageNow-
1)*pageSize).setMaxResults(pageSize);
list = query.list();
}
catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally {
if(session!=
null && session.isOpen()) {
session.close();
}
}
return list;
}
public static List
executeQuery(String hql, String[] paras) {
Session session =
null;
List list =
null;
try {
session = openSession();
Query query = session.createQuery(hql);
if(paras!=
null && paras.length>
0) {
for(
int i=
0; i<paras.length; i++) {
query.setString(i, paras[i]);
}
}
list = query.list();
}
catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally {
if(session!=
null && session.isOpen()) {
session.close();
}
}
return list;
}
public static void executeUpdate(String hql, String[] paras) {
Session session =
null;
Transaction ts =
null;
try {
session = openSession();
ts = session.beginTransaction();
Query query = session.createQuery(hql);
if(paras!=
null && paras.length>
0) {
for(
int i=
0; i<paras.length; i++) {
query.setString(i, paras[i]);
}
}
query.executeUpdate();
ts.commit();
}
catch (Exception e) {
if(ts!=
null) {
ts.rollback();
}
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally {
if(session!=
null && session.isOpen()) {
session.close();
}
}
}
public static void save(Object obj) {
Session session =
null;
Transaction ts =
null;
try {
session = openSession();
ts = session.beginTransaction();
session.save(obj);
ts.commit();
}
catch (Exception e) {
if(ts!=
null) {
ts.rollback();
}
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}
finally {
if(session!=
null && session.isOpen()) {
session.close();
}
}
}
}