小弟最近学习SSH框架,遇到一个问题,同时使用Struts2和Hibernate3.6时,Action中调用hibernateUtil的方法无法获取数据,而在测试类的main()方法里却能成功调用,小弟百思不得其解,恳请各位大神指点。
关键源代码如下:
业务逻辑ShowStuAction:
public class ShowStuAction extends ActionSupport {
private int page ;
private List<Student> result;
public static void main(String args[]){
List<Student> result = HibernateUtil.queryByPage("select stu from Student as stu",null,2, 20);
System.out.println(result.size());
for(Student s: result){
System.out.println("学号" + s.getStu_no());
System.out.println("姓名: " + s.getStu_name());
}
}
public String execute(){
result = HibernateUtil.queryByPage("select stu from Student as stu",null,1,20);
if(result.isEmpty()){
System.out.println("Result is Empty");
}
return "success";
}
hibernateUtil类关键代码:
public class HibernateUtil {
private static SessionFactory sessionFactory;
/**
* @return 获取会话工厂
*/
public static SessionFactory getSessionFactory()
{
//读取Hibernate的配置文件 hibernamte.cfg.xml文件
Configuration con=new Configuration().configure();
SessionFactory sessionFactory=con.buildSessionFactory();
return sessionFactory;
}
/**
* @return 获取会话对象
*/
public static Session getSession()
{
return getSessionFactory().openSession();
}
/**
* @param <T>
* @param sql
* @param param
* @param page
* @param size
* @return 实现分页查询
*/
@SuppressWarnings("unchecked")
public static <T> List<T> queryByPage(String sql,String[] param,int page,int size)
{
System.out.println("QueryByPage");
List<T> list=new ArrayList<T>();
Session session=null;
try
{
session=getSession();
Query query=session.createQuery(sql);
if(param!=null)
{
for(int i=0;i<param.length;i++)
{
query.setString(i,param[i]);
}
}
//筛选条数
query.setFirstResult((page - 1) * size);
query.setMaxResults(size);
list=query.list();
for(Object t : query.list()){
System.out.println("nima");
System.out.println(t.toString());
}
}
catch (Exception e)
{
}
finally
{
if(session!=null)
{
session.close();
}
}
return list;
}
hibernate3.6配置文件
<hibernate-configuration>
<session-factory>
<property name="connection.driver">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/whu</property>
<property name="connection.username">root</property>
<property name="connection.password">123456</property>
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.cache.use_second_level_cache" >false</property>
<mapping resource="pojo/Student.hbm.xml"/>
</session-factory>
</hibernate-configuration>
Struts2 配置文件
<struts>
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.devMode" value="true" />
<package name="stu" extends="struts-default">
<action name="showStu" class="action.ShowStuAction" method="execute">
<result name="success" >/content/show-stu-success.jsp</result>
</action>
</package>
</struts>
运行时,ShowStuAction中的main()
方法可以成功地获取数据,而execute()方法中的数据总是空的,后台没有报错。
Configuration con=new Configuration().configure();
改成
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。