Hibernate持久層框架使用【三】資料查詢與刪除
阿新 • • 發佈:2018-11-10
Hibernate資料查詢可以通過hibernate封裝好的兩個方法來實現
分別是get方法和load方法,這兩個方法都是通過主鍵來查詢資料
get方法:
新建個get.class類來測試一下,下面貼上程式碼
public class get { public static void main(String[] args) { // TODO Auto-generated method stub MySessionFactory mySessionFactory = new MySessionFactory(); Session session = mySessionFactory.getSession(); User user = (User) session.get(User.class, 1); System.out.println("姓名="+user.getName()+",年齡="+user.getAge()+",id="+user.getId()); //mySessionFactory.commit(); mySessionFactory.close(); } }
get方法第一個引數為引數型別(查詢的資料轉為對應的型別)第二個引數為主鍵,例如這裡查詢主鍵為1的資料
Hibernate:
select
user0_.user_id as user_id1_0_0_,
user0_.age as age2_0_0_,
user0_.name as name3_0_0_
from
tb_user user0_
where
user0_.user_id=?
姓名=王安石,年齡=5,id=1
控制檯成功打印出了select語句以及查詢出來的資訊(這裡查詢方法是不需要提交事務的)
load方法:
load方法與get方法不同的一點在於,它是在資料被使用時才會進行查詢
例如下面這段程式碼
public class get { public static void main(String[] args) { // TODO Auto-generated method stub MySessionFactory mySessionFactory = new MySessionFactory(); Session session = mySessionFactory.getSession(); // User user = (User) session.get(User.class, 2); User user = (User) session.load(User.class, 3); // System.out.println("姓名="+user.getName()+",年齡="+user.getAge()+",id="+user.getId()); // mySessionFactory.commit(); mySessionFactory.close(); } }
執行後可以發現控制檯並沒有輸出select語句,說明load並沒有真正去查詢資料
但是如果將程式碼中
System.out.println("姓名="+user.getName()+",年齡="+user.getAge()+",id="+user.getId());
這句的註釋去掉,再執行一遍,可以看到控制檯這時才使用了select語句去查詢資料
Hibernate:
select
user0_.user_id as user_id1_0_0_,
user0_.age as age2_0_0_,
user0_.name as name3_0_0_
from
tb_user user0_
where
user0_.user_id=?
姓名=王安石,年齡=5,id=3
刪除資料
delete方法:
新建一個delete類測試刪除方法
public class delete {
public static void main(String[] args) {
// TODO Auto-generated method stub
MySessionFactory mySessionFactory = new MySessionFactory();
Session session = mySessionFactory.getSession();
User user = new User();
user.setId(2);
session.delete(user);
mySessionFactory.commit();
mySessionFactory.close();
}
}
這個刪除方法非常簡單,只需要給user物件設定好主鍵id,再傳給delete方法,執行後看到控制檯列印delete語句,資料表成功刪除該資料