Hibernate--HQL

package smile.fu.hibernatetest;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

import smile.fu.entity.User;

public class HibernateDemo {

    @Test
    public void testAdd() {
        // 1. 加載hibernate核心配置文件
        // 到src下面找到名稱是hibernate.cfg.xml的文件
        // 在hibernate里面封裝對(duì)象
        Configuration cfg = new Configuration();
        cfg.configure();
        // 2.創(chuàng)建sessionFactory對(duì)象
        // 讀取hibernate核心配置文件內(nèi)容,創(chuàng)建sessionFactory
        // 讀取過(guò)程中根據(jù)映射關(guān)系在配置數(shù)據(jù)庫(kù)中把表創(chuàng)建
        SessionFactory sessionFactory = cfg.buildSessionFactory();
        // 3.使用sessionFactory創(chuàng)建session對(duì)象
        // 類似于鏈接
        Session session = sessionFactory.openSession();
        // 4. 開(kāi)啟事務(wù)
        Transaction tx = session.beginTransaction();
        // 5.crud操作
        // User user = new User();
        // user.setUserName("王花花");
        // user.setPassword("wanghuahua123");
        // user.setAddress("王華愛(ài)護(hù)");
        // session.save(user);
        // 批量添加,內(nèi)存不爆炸
        // User user=new User();
        // for(int i=666;i<=777;i++) {
        // user.setUserName("Name"+i);
        // user.setPassword(""+i*i);
        // user.setAddress("江西省三生三世"+i);
        // session.save(user);
        // //將session的一級(jí)緩存的數(shù)據(jù)與數(shù)據(jù)庫(kù)同步
        //// session.flush();
        // //清除session的一級(jí)緩存數(shù)據(jù)
        // session.clear();
        // }

        //hql查詢操作  需要寫(xiě)hql語(yǔ)句  是對(duì)實(shí)體類進(jìn)行操作 使用 Query對(duì)象來(lái)實(shí)現(xiàn)
        // 查詢list中的數(shù)據(jù)
        // ArrayList<String> passwordList=new ArrayList<>();
        // passwordList.add("1");
        // passwordList.add("582169");
        // passwordList.add("568516");
        // passwordList.add("570025");
        //
        // Query query = session.createQuery("from User it where it.password in
        // (:passwordList)");
        // query.setParameterList("passwordList", passwordList);
        // List<User> aList= query.list();
        // for (User user : aList) {
        // System.out.println(user.toString());
        // }

        // 模糊查詢
        // Query query = session.createQuery("from User it where it.address like ?");
        // % 與_ 的區(qū)別 %表示有n個(gè) _表示有一個(gè)
        // query.setParameter(0, "%江西%"); //setParameter 的時(shí)候可以用? 0 傳遞參數(shù)的值
        // List<User> userList = query.list();
        // for (User user : userList) {
        // System.out.println(user.toString());
        // }

        // 排序查詢 order by it.property 升序asc 降序desc
        // Query query=session.createQuery("from User it order by it.password desc");
        // List<User> userList = query.list();
        // for (User user : userList) {
        // System.out.println(user.toString());
        // }

        // 分頁(yè)查詢 mysql select * from t_user limit 0,3
        // hibernate中不能用limit,因?yàn)閘imit是mysql中獨(dú)有的
        // Query query=session.createQuery("from User it order by it.password desc");
        // query.setFirstResult(0);
        // query.setMaxResults(10);
        // List<User> userList = query.list();
        // for (User user : userList) {
        // System.out.println(user.toString());
        // }

        // 投影查詢 查詢表中部分字段的值 select userName,password from t_user
        // select 實(shí)體類屬性名稱1,實(shí)體類屬性名稱2 from 實(shí)體類名稱
        // hibernate中select后面不能跟* 不支持select *
        // Query query=session.createQuery("select password from User it order by
        // it.password desc");
        // List<Object> userList = query.list();
        // for (Object user : userList) {
        // System.out.println(user);
        // }

        // 聚合函數(shù)
        // Query query = session.createQuery("select count(*) from User");
        // //使用的是uniqueResult方法,唯一值
        // System.out.println(query.uniqueResult());
        // avg min max count
        // Query query = session.createQuery("select avg(password) from User");
        // System.out.println(query.uniqueResult());

        // User user= session.get(User.class, 4);
        // user.setAddress("改了地址23112");
        // session.update(user);

        // session.delete(session.get(User.class, 7));
        // ArrayList<Integer> idList=new ArrayList<Integer>();
        // idList.add(3);
        // idList.add(4);
        // idList.add(5);
        // idList.add(6);
        // Query query = session.createQuery("DELETE FROM User it where it.id in
        // (:idList)");
        // query.setParameterList("idList",idList );
        // query.executeUpdate();

        // 6.提交事務(wù)
        tx.commit();
        // 事務(wù)回滾
        // tx.rollback();
        // 7.關(guān)閉連接釋放資源
        session.close();
        sessionFactory.close();
    }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容