Hibernate之单张表的增,删,改,查以及批量操作

一.hibernate步骤

1.六个准备(三拷三配):

  • 拷jdbc驱动
  • 拷hibernate开发包
  • 拷 log4j
  • 配pojo(以一张学生表为例,数据库中两个字段。注意:要实现序列化)
public class Student  implements Serializable {
    private int sid;
    private String sname;
    //...setters和getters方法已省略   
}
  • 配映射文件
column :是数据库里面的字段,name: 是pojo的字段;不相同就得都写,名字相同可以省略
<hibernate-mapping>
    <class name="com.pojo.Student" table="stu">
        <id name="sid" column="id">
            <generator class="identity"/>
        </id>
        <property name="sname" column="name"/>
    </class>
</hibernate-mapping>
  • 配总的配置文件
 <hibernate-configuration>
    <session-factory>
        <property name="myeclipse.connection.profile">MySQL5</property>
        <property name="connection.url">jdbc:mysql://127.0.0.1:3306/s38</property>
        <property name="connection.username">root</property>
        <property name="connection.password">admin</property>
        <property name="connection.driver_class">
        com.mysql.jdbc.Driver
        </property>
        <property name="dialect">
        org.hibernate.dialect.MySQLDialect
        </property>
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <mapping resource="com/pojo/Student.hbm.xml" />
    </session-factory>
 </hibernate-configuration>

2.七个步骤(上一篇博文写了)

由于进行持久化操作的时候,多次用到了session,所有我们可以把得到session分装成一个公共的方法。

如下:

public class HibernateSessionFactory {
    private static Configuration cfg=new Configuration().configure();
    private static SessionFactory factory=cfg.buildSessionFactory();
    private static Map<Thread, Session> map = new HashMap();

    public static Session getSession()
    {
        Session session = map.get(Thread.currentThread());
        if (session==null || session.isOpen()==false)
        {
            session = factory.openSession();
            map.put(Thread.currentThread(), session);
        }

        return session;

    }
}

3.添加学生表的记录

**单个操作以主键为核心:
session.get() 找 ;
session.get() 添加 ;
session.delete() 删除 ;
session.update() 改

public class AddStu {

    /**
     * @param Anges
     * 添加学生表的记录
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Transaction tr=session.beginTransaction();
        Student stu=new Student();
        stu.setSname("lili");
        session.save(stu);
        tr.commit();
        session.close();
    }
}

4.根据主键查找学生

public class FindStu {

    /**
     * @param Anges
     * 根据主键查找学生
     * 可以不用事务
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Logger.getRootLogger().info(stu.getSname());
        }
    }

}

5.修改

public class UpdateStu {

    /**
     * @param Anges
     * 先查到学生然后再修改
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            stu.setSname("luoli");
            session.update(stu);
            tr.commit();
            Logger.getRootLogger().info(stu.getSname());
        }
        session.close();
    }
}

6.删除

public class DeleteStu {

    /**
     * @param Anges
     * 先查到学生然后再删除
         */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        Student stu=(Student) session.get(Student.class, 1);
        if(stu==null){
            Logger.getRootLogger().info("查无此人");
        }else{
            Transaction tr=session.beginTransaction();
            session.delete(stu);
            tr.commit();
        }
        session.close();
    }

}

7.

public class QueryFindStu {
    /**
     * @param Anges
     * 批量查找
     */
    public static void main(String[] args) {
        Session session=HibernateSessionFactory.getSession();
        String hql="from Student";  //在hql中: 表名改成类名  ,字段名改成属性名
        Query query=session.createQuery(hql);
        List<Student> list=query.list();
        for (Student stu : list) {
            System.out.println(stu.getSid()+"\t"+stu.getSname());
        }

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值