使用hibernate建立實體類對應的表格
阿新 • • 發佈:2018-11-09
1.建立實體類
public class User { private int uid; private String name; private String age; private String address; public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }
2.實體類對應的mapper.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> <!-- 1 配置類和表對應 class標籤 name屬性:實體類全路徑 table屬性:資料庫表名稱 --> <class name="dao.User" table="t_user"> <!-- 2 配置實體類id和表id對應 hibernate要求實體類有一個屬性唯一值 hibernate要求表有欄位作為唯一值 --> <!-- id標籤 name屬性:實體類裡面id屬性名稱 column屬性:生成的表字段名稱 --> <id name="uid" column="uid"> <!-- 設定資料庫表id增長策略 native:生成表id值就是主鍵自動增長 --> <generator class="native"></generator> </id> <!-- 配置其他屬性和表字段對應 name屬性:實體類屬性名稱 column屬性:生成表字段名稱 --> <property name="name" column="name"></property> <property name="age" column="age"></property> <property name="address" column="address"></property> </class> </hibernate-mapping>
3.核心hibernate.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"> <!-- 核心配置檔案格式xml,但是核心配置檔名稱和位置固定的 - 位置:必須src下面 - 名稱:必須hibernate.cfg.xml --> <hibernate-configuration> <session-factory> <!-- 第一部分: 配置資料庫資訊 必須的 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">123</property> <!-- 第二部分: 配置hibernate資訊 可選的--> <!-- 輸出底層sql語句 --> <property name="hibernate.show_sql">true</property> <!-- 輸出底層sql語句格式 --> <property name="hibernate.format_sql">true</property> <!-- hibernate幫建立表,需要配置之後 update: 如果已經有表,更新,如果沒有,建立 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 配置資料庫方言 在mysql裡面實現分頁 關鍵字 limit,只能使用mysql裡面 在oracle資料庫,實現分頁rownum 讓hibernate框架識別不同資料庫的自己特有的語句 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 讓session與本地執行緒繫結在一起 --> <property name="hibernate.current_session_context_class">thread</property> <!-- 第三部分: 把對映檔案放到核心配置檔案中 必須的--> <mapping resource="dao/UserMapper.xml"/> </session-factory> </hibernate-configuration>
4.測試主方法
// 第一步 載入hibernate核心配置檔案
Configuration cft = new Configuration();
cft.configure();//讀取hibernate.cfg.xml檔案
// 第二步 建立SessionFactory物件
SessionFactory SessionFactory = cft.buildSessionFactory();
// 第三步 使用SessionFactory建立session物件
Session session = SessionFactory.openSession();
// 第四步 開啟事務
Transaction tx = session.beginTransaction();
// 第五步 寫具體邏輯 crud操作
User user= new User();
user.setAddress("北京");
user.setName("張三");
user.setAge("18");
session.save(user);
// 第六步 提交事務
tx.commit();
// 第七步 關閉資源
SessionFactory.close();