Hibernate框架初始配置及对数据库表增删改查

搭建环境

一、导入jar包

1.jdbc的jar包

2.hibernate的jar包:hibernate-release-5.2.6.Final\lib\required

二、配置Hibernate。

1.建立hibernate.cfg.xml文件(包所在的文件夹的project里去搜索复制内部脉络

2.配置(project/etc/hibernate.properties中搜索到使用的数据库配置

  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory >
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password"></property>
        <property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/mydb?characterEncoding=GBK</property>
        <property name="show_sql">true</property><!-- 控制台显示sql语句 -->
        <!-- 表映射加载 -->
        <mapping resource="maya/model/Fruit.hbm.xml"/>        
    </session-factory>
</hibernate-configuration>

 

三、准备数据库(在数据库中建立表)

四、准备实体(建议使用:引用类型。建议类名属性名与列名一致)

public class Fruit {
    private String ids;
    private String name;
    private Double price;//引用类型。不建议使用值类型double
    private String source;
    private Integer numbers;//引用类型。不建议使用值类型int
    private String image;
    public String getIds() {
        return ids;
    }
    public void setIds(String ids) {
        this.ids = ids;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getPrice() {
        return price;
    }
    public void setPrice(Double price) {
        this.price = price;
    }
    public String getSource() {
        return source;
    }
    public void setSource(String source) {
        this.source = source;
    }
    public Integer getNumbers() {
        return numbers;
    }
    public void setNumbers(Integer numbers) {
        this.numbers = numbers;
    }
    public String getImage() {
        return image;
    }
    public void setImage(String image) {
        this.image = image;
    }
}

五、准备映射文件  实体类名.hbm.xml  例:Fruit.hbm.xml

方法:从project文件夹中搜索hbm.xml,按它的脉络更改

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    
<hibernate-mapping default-lazy="false" package="maya.model"><!-- 本包名 -->

    <class name="Fruit" table="Fruit"><!-- java类和数据库表 -->
        <id name="ids" ><!-- 主键 -->
            <generator class="assigned"/><!-- 手动赋值,如果是自动生成用native -->
        </id>
        <property name="name"/><!-- 其他字段 -->
        <property name="price"/>
        <property name="source"/> 
        <property name="numbers" />
        <property name="image"/>
        
    </class>   

</hibernate-mapping>

 

记住!!回到hibernate.cfg.xml下,加上<mapping resouse="映射文件路径"/>映射,本例已加载

六、写代码完成增删改查

public static void main(String[] args) {
        //读取hibernate.cfg.xml的配置,加载Hibernate的类库
        Configuration config = new Configuration().configure();
        //根据配置,生成session工厂
        SessionFactory factory = config.buildSessionFactory();
        //用工厂来生成session
        Session session = factory.openSession();
        //利用session对数据进行CRUD操作,测试session是否建立连接
        //System.out.println(session.isConnected());
     /*
         * 说明:这里的session不是web中的session,web中的session代表的是客户端与web服务器之间的会话,这里的session指的是程序与数据库之前的会话,它是由hibernate进      行管理的
         */

        //四、修改
        //1.查
        Fruit data = session.get(Fruit.class, "s002");
        if(data!=null) {
            session.beginTransaction();
            //2.改
            data.setNumbers(120);
            data.setPrice(50.0);
            //3.提交
            session.update(data);
            session.getTransaction().commit();
        }
        //三、删除
//        //1.查
//        Fruit data = session.get(Fruit.class, "s002");
//        //2.删
//        if(data!=null) {
//            session.beginTransaction();
//            session.delete(data);
//            session.getTransaction().commit();
//        }
        //二、查询
        //查询单条
//        Fruit data = session.load(Fruit.class, "k001");
//        System.out.println(data.getName()+data.getSource());
        //查询所有的
//        List<Fruit> list = session.createQuery("from Fruit").getResultList();
//        for(Fruit data:list) {
//            System.out.println(data.getName()+data.getSource());
//        }
        //一、添加操作
//        //1.造对象
//        Fruit data = new Fruit();
//        
//            
//            data.setIds("s002");
//            data.setName("猕猴桃");
//            
//            //2.用session.save()保存到数据库
//            session.beginTransaction();
//            session.save(data);
//            session.getTransaction().commit();
//        
//        //关闭session
//        session.close();

    }

 

posted @ 2017-03-03 17:10  囧雪诺  阅读(539)  评论(0编辑  收藏  举报