学习笔记: hibernate的环境搭建和增删改查

xiaoxiao2021-02-27  343

hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC   "-//Hibernate/Hibernate Configuration DTD 3.0//EN"   "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">   <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=BK</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password">112358</property> <!-- 当发现报dialect was not set时说明name=“方言”没写对 --> <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- 控制台显示sql --> <property name="hibernate.show_sql">true</property> <mapping resource="hibernate/User.hbm.xml"></mapping> </session-factory>

</hibernate-configuration>

**********************************************************************************************************************************

hibernate.UserT

package hibernate; import java.util.Date; public class UserT { private String id; private String name; private Date createTime; private Date exprieTime;

..........get,set方法

}

**********************************************************************************************************************************

User.hbm.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"       "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">       <hibernate-mapping>     <class name="hibernate.UserT" table="UserT2"><!-- 不预设表名,创建表时就会以实体类名命名 -->          <!-- 对主键设置 -->     <id name="id" column="id"><!-- 主键名相同就不需要映射 -->     <!-- generator是对主键("id")的设置 -->     <generator class="uuid"></generator>     </id>     <!-- 若表中字段和类中属性名称一样就不许要设置,名称对应关系,不一样就需要设置 -->     <!-- type中的类型需要 小写 不然会报错 -->     <!-- name属性必须,其余属性据情况而论 -->          <property name="name" type="string" column="name" not-null="true" length="1000"></property>     <property name="createTime" ></property>     <property name="exprieTime" ></property>     </class>     </hibernate-mapping>

**********************************************************************************************************************************

hibernate.Client

package hibernate; import java.util.Date; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class Client { /** * @param args */ public static void main(String[] args) { Configuration cfg=new Configuration().configure();//读取hibernate配置文件 //创建表,若表名未设置则会默认以实体类名命名,另外表名若是已存在会被删除重修创建 SchemaExport export=new SchemaExport(cfg); //export.create(true, true); SessionFactory factory=cfg.buildSessionFactory();//建立Sessionfactory Session session=null;//获取session try{ session=factory.openSession(); session.beginTransaction();//开始事物 UserT userT=new UserT(); //插入操作 // userT.setId("7");//若预设了主键生成方式(此处是uuid),在此set也没用 // userT.setName("超人"); // userT.setCreateTime(new Date()); // userT.setExprieTime(new Date()); // session.save(userT);//保存userT对象 // session.getTransaction().commit();//开启事务 //全体查询 HQL方式 // Query query=session.createQuery("from UserT where name='超人' ");//UserT不是表名,而是实体类名 // List list=query.list(); // System.out.println(list); //    session.getTransaction().commit(); //根据主键查询 // userT=(UserT)session.get(UserT.class,"2" ); // System.out.println(userT); // session.getTransaction().commit();    //根据id删除(方式1)按照主键删除 // userT=(UserT)session.get(UserT.class,"2c90e6dd5c7b3b9e015c7b3ba0fd0001"); // session.delete(userT); // session.getTransaction().commit(); //根据id删除(方式2)按照主键删除 // userT.setId("5"); // userT.setName("超人");//非空字段也需要写上 // session.delete(userT); // session.getTransaction().commit(); // //使用HQL删除 // Query query=session.createQuery(" delete FROM UserT Where name= ? "); // query.setString(0,"钢铁侠"); // query.executeUpdate(); // session.getTransaction().commit(); //更新(按照主键更新) // userT=(UserT) session.get(UserT.class, "2c90e6dd5c772efd015c772efff20001"); // userT.setName("钢铁侠"); // userT.setCreateTime(new Date()); // session.update(userT); // session.getTransaction().commit(); //使用HQL更新 // Query query=session.createQuery("update UserT set name=?,id=? where name =? and id='2c90e6dd5c7b3b70015c7b3b73400001'" ); // query.setString(0, "超人"); // query.setString(1, "2"); // query.setString(2,"钢铁侠"); // query.executeUpdate(); // session.getTransaction().commit(); userT=(UserT) session.load("UserT", "1"); System.out.println(userT.getName()); }catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback();//回滚事务 }finally{ if(session!=null){ if(session.isOpen()){ session.close();//关闭事务 } } } } }
转载请注明原文地址: https://www.6miu.com/read-11360.html

最新回复(0)