zoukankan      html  css  js  c++  java
  • Hibernate(二)关于Hibernate的增删改操作

    创建一个maven项目,在pom.xml文件中引入对应的节点

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>MY</artifactId>
            <groupId>cn.my</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>06Hibernate</artifactId>
        <packaging>war</packaging>
    
        <name>06Hibernate Maven Webapp</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.3</version>
                <scope>test</scope>
            </dependency>
    
            <!--hibernate core 核心jar-->
            <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.0.6.Final</version>
            </dependency>
            <!--hibernate jta 管理事务-->
            <!-- https://mvnrepository.com/artifact/javax.transaction/jta -->
            <dependency>
                <groupId>javax.transaction</groupId>
                <artifactId>jta</artifactId>
                <version>1.1</version>
            </dependency>
            <!-- 添加Log4J依赖 -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
            </dependency>
            <!--slf4j-nop-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
                <version>1.6.4</version>
            </dependency>
            <!-- 添加javassist -->
            <dependency>
                <groupId>javassist</groupId>
                <artifactId>javassist</artifactId>
                <version>3.12.0.GA</version>
            </dependency>
            <!--hibernate-jpa-->
            <dependency>
                <groupId>org.hibernate.javax.persistence</groupId>
                <artifactId>hibernate-jpa-2.0-api</artifactId>
                <version>1.0.1.Final</version>
            </dependency>
            <!-- mysql数据库的驱动包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.6</version>
            </dependency>
        </dependencies>
    
        <build>
           <!--这里是配置所有的xml文件都可以被读取到-->
            <resources>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                </resource>
            </resources>
        </build>
    </project>

    在resources下创建一个hibernamte.cfg.xml文件,

    <?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.connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="hibernate.connection.url">jdbc:mysql:///s2228</property>
            <property name="hibernate.connection.username">root</property>
            <property name="hibernate.connection.password"></property>
            <!--是否显示sql-->
            <property name="show_sql">true</property>
            <!--是否格式化-->
            <property name="format_sql">false</property>
            <!--hbm2ddl   就是把xx.hbm.xml文件中的配置生成数据库中DDL(数据定义语言)
            create:  每次运行都会删除 上次生成的表,还会创建新的!
            update: 没有表会自动创建,有表就增加数据!
            validate: 如果hbm文件和数据库中的字段对应 就会新增,
                      否则抛出异常!
           create-drop:  每次运行都会删除 上次生成的表,前提是sessionFactory关闭
            -->
            <property name="hbm2ddl.auto">update</property>
            <!--需要加载的hbm.xml文件  读取小配置中的文件-->
            <mapping resource="cn/my/entity/Teacher.hbm.xml"></mapping>
        </session-factory>
    </hibernate-configuration>  

    创建一个实体类Teacher

    package cn.my.entity;
    
    /**
     * Created by mycom on 2018/5/25.
     */
    public class Teacher {
        private Integer id;
        private String name;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    View Code

    编写对应实体类的一个配置文件Teacher.hbm.xml,这个文件相当于mybatis中的小配置的文件

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.my.entity">
        <class name="Teacher" table="teacher" lazy="false">
            <id name="id" column="id">
                <!--generator 主键生成策略
                assigned:主键是由程序猿自己设置的!
                identity: 针对于mysql数据库的主键自增 (mysql数据库说了算)
                sequence: 针对于oracle数据库中的序列
                    <generator class="sequence">
                      <param name="sequence">序列名称</param>
                   </generator>
               increment: 首先会产生一条sql select max(id)  from teacher
                          之后id+1  赋值给主键
                -->
                <generator class="assigned"></generator>
            </id>
            <property name="name" column="name"></property>
        </class>
    </hibernate-mapping>

    注意点:

       Hbm.xml一定要被cfg.xml管理!


    创建测试类,在测试类中测试增删改

     /***
         * 新增数据
         */
        @Test
        public void addTest(){
            //创建对象
            Teacher teacher=new Teacher();
            teacher.setId(2);
            teacher.setName("王老师");
            System.out.println("==================================");
            //真正向数据库添加
            session.save(teacher);
            System.out.println("==================================");
        }
        /***
         * 删除数据
         */
        @Test
        public void delTest(){
            //创建对象
            Teacher teacher=new Teacher();
            teacher.setId(2);
            System.out.println("==================================");
            //删除数据库中的信息
            session.delete(teacher);
            System.out.println("==================================");
        }
        /***
         * 修改数据
         */
        @Test
        public void updateTest(){
            //创建对象
            Teacher teacher=new Teacher();
            teacher.setId(1);
            teacher.setName("赵进沛");
            System.out.println("==================================");
            //删除数据库中的信息
            session.update(teacher);
            System.out.println("==================================");
        }

     

      

  • 相关阅读:
    剑指offer--38.左旋转字符串
    剑指offer--37.和为S的两个数字
    剑指offer--35.数组中只出现一次的数字
    剑指offer--34.数字在排序数组中出现的次数
    剑指offer--33.丑数
    剑指offer--36.整数中1出现的次数(从1到n整数中1出现的次数)
    剑指offer--32.把数组排成最小的数
    剑指offer--31.二叉树中和为某一值的路径
    剑指offer--30.二叉搜索树的后序遍历序列
    剑指offer--29.从上往下打印二叉树
  • 原文地址:https://www.cnblogs.com/my-123/p/9092423.html
Copyright © 2011-2022 走看看