1. 程式人生 > >Hibernate關聯查詢

Hibernate關聯查詢

專案框架資料庫表


分析:兩個表之間的關聯查詢需要兩個工具類,兩個工具類對應兩個對映檔案,這也是hibernate的缺點,幾個工具類就需要對應多少工具類 同時還需要將兩個類互相注入也就是user要注入到phone中,phone也需要注入到user中 同時在這其中如出現錯誤大部分是對映檔案配置出錯,需要注意對映檔案的名稱,需要的屬性。
程式碼塊 User.java package dao; import java.sql.Date; public class User { private String idcard; private String name; private String password; private String age; private String addr; Phone phone; public Phone getPhone() { return phone; } public void setPhone(Phone phone) { this.phone = phone; } public User() { } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard; } 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 getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } } User.hbm.xml
<?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="dao"> <class name="User" table="t_person"> <id name="idcard" column="idcard"> <generator class="native" /> </id> <property name="name" column="name" /> <property name="password" column="password" /> <property name="age" column="age" /> <property name="addr" column="addr" /> <one-to-one name="phone" cascade="all" /> </class> </hibernate-mapping> Phone.java
package dao; public class Phone { String idcard; String phone; User user; public String getIdcard() { return idcard; } public void setIdcard(String idcard) { this.idcard = idcard; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } Phone.hbm.xml
<?xml version="1.0"?> <!-- 與javabean同包 --> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="dao"> <class name="Phone" table="t_phone"> <id name="idcard"> <generator class="native" /> </id> <property name="phone" column="phone" /> <many-to-one name="user" column="idcard" unique="true" insert="false" update="false" not-null="true" /> </class> </hibernate-mapping> hibernate.cfg.xml <!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節點代表一個數據庫 --> <session-factory> <!-- 1. 資料庫連線配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///zdy?useUnicode=true&amp;characterEncoding=UTF8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 資料庫方法配置,hibernate在執行的時候,會根據不同的方言生成符合當前資料庫語法的sql --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 2. 其他相關配置 --> <!-- 2.1 顯示hibernate在執行時候執行的sql語句 --> <property name="hibernate.show_sql">true</property> <!-- 2.2 格式化sql --> <property name="hibernate.format_sql">true</property> <!-- 2.3 自動建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 3. 載入所有對映 --> <mapping resource="dao/User.hbm.xml"/> <mapping resource="dao/Phone.hbm.xml"/> </session-factory> </hibernate-configuration> Test.java package dao; import java.sql.Date; import java.util.*; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; public class Test { public static void main(String[] args) { Configuration config = new Configuration().configure(); SessionFactory sessionFactory = config.buildSessionFactory(); Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); String hql = "FROM User u,Phone t WHERE u.idcard=t.idcard "; Query query = session.createQuery(hql); List list = query.list(); System.out.println(list.toString()); // tx.commit(); session.close(); // sessionFactory.close();// 一定 不 要 關閉.這裡只是寫出來做例子 } }

相關推薦

Hibernate 關聯查詢返回組合的Bean,而不是返回Object[]

目的:hibernate 多張表關聯查詢,用到了原生的sql,那麼用到SQLQuery,返回的是Object[],如果欄位太多,在後期維護上很不方便(obj[0],obj[1],,,,),為了維護方便,就改成自定義實體;程式碼如下: StringBuffer sql = n

Hibernate關聯查詢

專案框架資料庫表 分析:兩個表之間的關聯查詢需要兩個工具類,兩個工具類對應兩個對映檔案,這也是hibernate的缺點,幾個工具類就需要對應多少工具類 同時還需要將兩個類互相注入也就是user要注入到phone中,phone也需要注入到user中 同時在這其中如出現錯

hibernate關聯查詢純SQL的實現(mysql)

兩張表關聯查詢,學生表和學生學習記錄表,學生表是學生的基本資訊,學習記錄主要是每天背誦的單詞記錄,包括單詞對錯的個數ifnull:如果是空則為...left join左連線,左表全部顯示,右表沒有匹配

hibernate關聯查詢時物件設定int型別報錯

例如:A,B表,left join左表關聯,B表少條關聯資料,如果B表中有int型別,在物件中要用Integer包裝類,否則關聯查詢時int型別不能為null就會報錯,Integer有null值就沒問題

Hibernate-ORM:11.Hibernate中的關聯查詢

雙向 create oracle 下一條 關系 配置文件 href 並且 commit ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 本篇博客將講述Hibernate中的關聯查詢,及其級聯(casc

hibernate 一對多自關聯查詢(如選單表)

hibernate 有自帶的選單查詢功能,當查詢的節點有幾千條時,hibernate自帶的選單查詢會造成卡頓的情況,但一般情況下hibernate自帶的選單查詢減少程式設計師的程式碼量, 簡化了程式碼 相關測試資料(MySQL) -- 一對多雙向自關聯 -- 選單表 -- t_hib

hibernate一對多關聯查詢去重 criteria設定 解決分頁條數不正確的問題

Criteria criteria=classroomDao.getCriteria(new classroom()); criteria.setFetchMode("studentList", FetchMode.SELECT); criteria.setRe

Hibernate Criteria 關聯查詢(inner join 與 left join)

實體類 User 、Dept 。 每個User都有對一個Dept屬性 -----------------------------------------------------------model類-------------------------------------

hibernate HQL 分頁 關聯查詢(一對多單向,多對一 雙向,多對多)

HQL的 分頁 1.首先我們準備好實體類: package cn.happy.hibernate04pagelist; import cn.happy.hibernate03hql.conEmp; import java.util.Date; /** * Creat

關於SpringMVC+Hibernate框架的關聯查詢與分頁查詢

一、hibernete的關聯查詢 hibernete使用多表查詢,並且要求查詢某表中的某些指定欄位時,就需要自己在實體類中建立一個用於關聯查詢的物件。因為getCurrentSession().createQuery()方法返回的是Object物件陣列,無法強

sqlserver 關聯查詢 charindex 函數 查詢慢,不使用索引問題解決辦法

單個 索引 觸發 其中 關鍵字 函數 pla select replace 問題:   兩張表 數據都非常多 A表中A1字段 需要關聯B表主鍵 查詢 A1 字段 存儲多個B表主鍵   格式為:     格式1:b1,b2,b3     格式2:b4

hibernate查詢緩存和二級緩存的配合使用

介紹 條件 效果 發現 代碼 spa family 又一 希望 我的上一篇博客Hibernate緩存體系之查詢緩存(query cache),以及list和iterate方法的差別介紹了查詢緩存的概念,以及list和iterate的差別。讀者可能註意到:那篇博客測試的前

多表關聯查詢

多表關聯 多表關聯查詢 mage .com bsp src logs log images    多表關聯查詢

hibernate關聯映射

課程 裏的 rac nco dsm 實現 rem 也有 urn 本文可作為北京尚學堂馬士兵hibernate課程的學習筆記。 hibernate的映射,主要分為一對一,一對多,多對一,多對多,同一時候還要單向與雙向的差別。 OK,不要糾結於名字,我們開始看樣例。 一

一張表多個字段是另一張表的主鍵,關聯查詢語句

left join phone where table 查詢語句 tab tin 主鍵 let CREATE TABLE `User`(   `Id` BIGINT AUTO_INCREMENT NOT NULL,   `Name` VARCHAR(10)

mybatis08--關聯查詢多對一

spa namespace 文件 pan encoding iat ide java integer 根據省會的id查詢出省會和對應國家的信息 01.多表的連接查詢 修改對應的實體類信息 /** *國家的實體類 */ public class Cou

mybatis11--多對多關聯查詢

div 3.0 ctype his prop 1.0 加載 hash oct 多對多關聯! 其實就是兩個一對多的關聯! 比如說 一個學生可以有多個老師!一個老師可以有多個學生! 那麽 學生和老師之間的關系 可以理解為 多對多的關聯關系! 關鍵是怎麽建立數據庫中兩個表之

NHibernate教程(11)--多對多關聯查詢

true 這一 -m hive 原生 .html etime virtual 及其 本節內容 多對多關系引入 多對多映射關系 多對多關聯查詢 1.原生SQL關聯查詢 2.HQL關聯查詢 3.Criteria API關聯查詢 結語 多對多關系引入 讓我們再次回顧在第

MyBatis_關聯查詢

none ack inline width log wid mage -1 image 1:Ndao層:測試N:1MyBatis_關聯查詢

mongodb關聯查詢

新建用戶 1-1 技術 bject mongod object img max 集合 使用DBRefs DBRefs中有三個字段 - $ref - 此字段指定引用文檔的集合 $id - 此字段指定引用文檔的_id字段 $db - 這是一個可選字段,並包含引用文檔所在的數據