二 Hibernate HQL实现学生管理系统的CRUD

package com.dao.impl;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.dao.StudentDao;
import com.domain.Student;
import com.util.HibernateUtils;
import com.util.JDBCUtil02;
import com.util.TextUtils;
/**
 * 这是StudentDao的实现,针对前面定义的规范做出的具体实现
 *
 */
public class StudentDaoImpl implements StudentDao {

    @Override
    /**
     * 查询所有学生
     * @throws SQLException
     */
    public List<Student> findAll() throws SQLException {
       Session session = HibernateUtils.oppenSession();
       Transaction transaction = session.beginTransaction();
       //HQL查询,面向对象的查询语言,from Student
       Query query = session.createQuery("from Student");
       List<Student> list =  query.list();
       transaction.commit();
       session.close();
       return list;
       /*    QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        return runner.query("select * from students",new BeanListHandler<Student>(Student.class));
    */}

    @Override
    /**
     * 需要添加到数据库的学生
     */
    public void insert(Student student) throws SQLException {
    /*    QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
         runner.update("insert into students values(null,?,?,?,?,?,?)",
                student.getSname(),
                student.getGender(),
                student.getPhone(),
                student.getBirthday(),
                student.getHobby(),
                student.getInfo()
                 ); */
           Session session = HibernateUtils.oppenSession();
           Transaction transaction = session.beginTransaction();
           //HQL查询,面向对象的查询语言
           session.save(student);
//           Query query = session.createQuery("insert into Student values(null,student.getSname(),student.getGender(),student.getPhone(),student.getBirthday(),student.getHobby(),student.getInfo())");
           transaction.commit();
           session.close();
    }

    @Override
    /**
     * 根据id删除学生
     */
    public void delete(int sid) throws SQLException {
    /*    QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("delete from students where sid = ?" , sid);*/
           Session session = HibernateUtils.oppenSession();
           Transaction transaction = session.beginTransaction();
           //HQL查询,面向对象的查询语言
           Student student = session.get(Student.class, sid);
           session.delete(student);
//           Query query = session.createQuery("insert into Student values(null,student.getSname(),student.getGender(),student.getPhone(),student.getBirthday(),student.getHobby(),student.getInfo())");
           transaction.commit();
           session.close();
    }
    /**
     * 根据id查询单个学生
     * @throws SQLException
     */
    @Override
    public Student findStudentById(int sid) throws SQLException {
    /*    QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        return runner.query("select * from students where sid = ?", new BeanHandler<Student>(Student.class) , sid);
    */
           Session session = HibernateUtils.oppenSession();
           Transaction transaction = session.beginTransaction();
           //HQL查询,面向对象的查询语言
           Student student = session.get(Student.class, sid);
           transaction.commit();
           session.close();
           return student;
    }
    @Override
    /**
     * 更新学生到数据库
     */
    public void Update(Student stu, int sid) throws SQLException {
/*        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        runner.update("update students set sname=?,gender=?,phone=?,birthday=?,hobby=?,info=? where sid = ? ",
                stu.getSname(),
                stu.getGender(),
                stu.getPhone(),
                stu.getBirthday(),
                stu.getHobby(),
                stu.getInfo(),
                sid
                );*/
     Session session = HibernateUtils.oppenSession();
     Transaction transaction = session.beginTransaction();
     stu.setSid(sid);
     session.saveOrUpdate(stu);
     transaction.commit();
     session.close();
    }

    @Override
    /**
     * 模糊查询的DAO层实现
     */
    public List<Student> SearchStident(String sname, String sgender) throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        /*
         * select * from stu where sname like ? and gender = ?
         *
         * 如果两个都没有就查询所有
         */
        List<String> list = new ArrayList<String>();
        String sql = "select * from students where 1 = 1 ";
        if(!TextUtils.isEmpty(sname)){
            sql = sql + " and sname like ? ";
            list.add("%"+sname+"%");
        }
        if(!TextUtils.isEmpty(sgender)){
            sql = sql + " and gender = ? ";
            list.add(sgender);
        }
         return runner.query(sql, new BeanListHandler<Student>(Student.class),list.toArray());
    }

    @Override
    /**
     * 分页查询,查询当前页的学生数据并封装成集合
     */
    public List<Student> findStudentByPage(int currentPage) throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        //第一个?返回记录数量,第二个?偏移量
        //第n页 :  5,5*n-1
        return runner.query("select * from students limit ? offset ?",new BeanListHandler<Student>(Student.class),PAGE_SIZE,PAGE_SIZE*(currentPage-1));
    }

    @Override
    /**
     * 查询学生记录数
     */
    public int findCount() throws SQLException {
        QueryRunner runner = new QueryRunner(JDBCUtil02.getDataSource());
        //用于处理平均值,总个数
        Long result = (Long)runner.query("select count(*) from students", new ScalarHandler());
        return result.intValue();
    }

}

原文地址:https://www.cnblogs.com/ltfxy/p/10301906.html

时间: 2024-08-29 06:57:37

二 Hibernate HQL实现学生管理系统的CRUD的相关文章

【乱写代码坑人系列】ZJUT数据库大型实验 - 学生管理系统(二):项目规划

学生管理系统(二)项目规划 学生管理系统(一)建立项目 好吧这部分应该放在第一的,但是我忘了(逃.其实也差不多啦,反正上一篇也没说什么啊哈哈. 先说项目要求.项目要求的是建立一个管理系统,用来对本地的数据库进行增删查改,把.mdf 文件直接拿来改会被老师打的,所以还是要有一个图形界面. 图形界面要有几个页面:登录,主窗口,学院.老师.学生.课程.成绩的管理,要能看到详细信息,能够批量删除什么的.为了装逼可以考虑加入与Office的连接,不过这个是后话,做好基础功能再玩. 数据库要这么几个表:学院

实践hibernate的应用——struts2+hibernate的简单学生信息管理

struts2+hibernate的简单学生信息管理,没有用很好的界面,目的主要是为了实践一下hibernate框架的学习,深入了解hibernate框架. 下面是项目的目录: 配置文件hibernate.cfg.xml <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN&

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next; };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明 int n;//存放学生人数 int man;//存放统计的男生数 float JY(float a)//校验成绩使范围0-10

精美学生管理系统

半个学期即将完美结束,精美的学生管理系统也终于亮相啦,哈哈! 话不多说,切入正题. 首先,要了解完成学生管理系统的步骤: 总共有几个模块,我就逐一讲解: 一:完成登录页面模块 判断“登录”是否成功的代码: 1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 string str = DBHelper.str; 4 SqlConnection con = new SqlConnection(str); 5 string s

简单的学生管理系统

简单的学生管理系统 一,主要功能: 1,添加学生信息: 2,添加的学生信息显示在线型布局中: 3,把学生信息保存在xml文件中: 4,把保存在mxl中的学生信息取出来解析显示在界面: 二,主要知识点: 1,layout_weight的使用: 2,pull解析xml文件,xml序列化: 3,保存数据到sd卡: 4,动态添加控件刷新界面: 三,界面原型如下图: 四,代码展示: 1,界面xml文件,activity_main.xml <LinearLayout xmlns:android="ht

Java 图形界面开发--图文并茂建立学生管理系统

图形用户界面(Graphics User Interface,GUI)是用户与程序交互的窗口,比命令行的界面更加直观并且更好操作. 这是本人在学习java图形界面开发阶段一步一步实现的超级简易的学生管理系统.虽然说不入大神法眼,但这确实是费了自己不少心血.对于我这样的菜鸟来说,考虑不周到,一不小心就Exception,然后就是自己调呀调.在此分享出来希望对和我一样的菜鸟有帮助. 程序完整代码下载地址见: https://github.com/chaohuangtianjie994/The-Sys

链表+文件 一个初学者实现学生管理系统的心得

其实,用链表与文件写学生管理系统内容可分为两大模块: 模块一:一个完整的创建.遍历.添加.删除.修改的链表: 模块二:读取/写入数据到文件. 模块一 一个链表,主要是malloc的正确使用. 定义一个带有结构指针的结构体,用malloc()动态开辟一个该结构体大小的内存用来作为节点,储存多个平行数据并且每动态开辟一个内存就要用这个内存里面的结构指针指向下一个开辟的内存(如果停止动态开辟内存,则需让这个指针指向NULL,作为Programmer都知道指针的潜在危险).这个节点数量需用循环控制.ma

Java写一个简单学生管理系统

其实作为一名Java的程序猿,无论你是初学也好,大神也罢,学生管理系统一直都是一个非常好的例子,初学者主要是用数组.List等等来写出一个简易的学生管理系统,二.牛逼一点的大神则用数据库+swing来做一个有界面的学生管理系统.其实都并不会太难. 今天我就先写一个简单的用List来实现学生管理系统: 首先,管理系统是针对学生对象的,所以我们先把学生对象就写出来: package bean; public class Student { String name; String studentId;

结对实验——学生管理系统

一.题目简介 1 程序设计说明 1.1 程序实现的大体思路: 将学生信息存放在一个记事本中,让该记事本模拟数据库.通过用户输入的命令,对该记事本内的信息进行操作. 1.2 程序主界面 主页面分为4个,从控制台进行操作(主界面) 用户登陆 用户注册 信息查询 退出系统 1.2.1 主界面功能介绍 提示用户输入功能对应的序号,来执行相应的功能. 根据用户输入的数字,进行相应的操作,如:用户输入1后,进入用户登陆界面.当用户输入不符合要求时,提示用户重新输入. 1.3 用户登陆 1.3.1 用户登陆功