Struts2与Hibernate整合时无法读取数据库中的数据-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Struts2与Hibernate整合时无法读取数据库中的数据

云栖技术 2016-06-02 14:55:26 2057

小弟最近学习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()方法中的数据总是空的,后台没有报错。

SQL Java 关系型数据库 MySQL 数据库连接 网络安全 数据库
分享到
取消 提交回答
全部回答(1)
  • 云栖技术
    2019-07-17 19:24:55
    Configuration con=new Configuration().configure();
    改成
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程