zoukankan      html  css  js  c++  java
  • Hibernate框架初始配置及对数据库表增删改查

    搭建环境

    一、导入jar包

    1.jdbc的jar包

    2.hibernate的jar包:hibernate-release-5.2.6.Finallib equired

    二、配置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();
    
        }
  • 相关阅读:
    Hive编程指南学习笔记
    HIVE的HQL语句优化原理
    启动avd Android模拟器缓慢 HAXM自动安装失败
    linu保持远程会话
    webdriver下拉框中选择option的方法提醒
    python3输出指定log信息
    python3 读取csv的常用语法
    谁说selenium打开firefox不用驱动的???!!!!
    项目上有点忙,不做上周就做好了计划的东西
    django 的auth.authenticate返回为None
  • 原文地址:https://www.cnblogs.com/jonsnow/p/6496884.html
Copyright © 2011-2022 走看看