1. 程式人生 > >Hibernate-ORM:07.Hibernate中的參數綁定

Hibernate-ORM:07.Hibernate中的參數綁定

mys AD ram eat 動態參數 div 下標 語句 print

------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑-------------

本篇博客會講解Hibernate中的參數綁定,就是相當於sql語句中的where後面的條件

一,講解概述

  1.通過下標的方式綁定參數

  2.通過自定義參數名的方式綁定參數(多用於多表操作)

  3.通過傳入自定義對象的方式綁定參數(多用於單表操作)

  4.通過類似智能標簽的方式綁定參數(多用於帶條件的多表操作)

二,通過下標的方式綁定參數

    @Test
    /*通過下標的方式指定參數*/
    public void t01Parameterbyunderid(){
        
/*模擬前臺輸入參數*/ Teacher teacher=new Teacher("a",400.00); /*hql語句*/ String hql="from Teacher where address=? and sal>?"; Query query = session.createQuery(hql); /*賦值*/ query.setParameter(0,teacher.getAddress()); query.setParameter(1,teacher.getSal());
/*查詢*/ List list = query.list(); /*遍歷*/ for (Object t:list) { System.out.println(t); } }

三,通過自定義參數名的方式綁定參數(多用於多表操作)

    @Test
    /*通過自定義參數名的方式指定參數*/
    public void t02Parameterbymyselfkey(){
        /*模擬前臺輸入參數*/
        Teacher teacher=new Teacher("a",400.00);


        
/*hql語句*/ String hql="from Teacher where address=:teaAdd and sal>:teasal"; Query query = session.createQuery(hql); /*賦值*/ query.setParameter("teaAdd",teacher.getAddress()); query.setParameter("teasal",teacher.getSal()); /*查詢*/ List list = query.list(); /*遍歷*/ for (Object t:list) { System.out.println(t); } }

四,通過傳入自定義對象的方式綁定參數(多用於單表操作)

    @Test
    /*通過自定義對象的方式指定參數*/
    /*適合單表操作*/
    public void t03ParameterbymyselfObject(){
        /*模擬前臺輸入參數*/
        Teacher teacher=new Teacher("a",400.00);


        /*hql語句*/
        String hql="from Teacher where address=:address and sal>:sal";
        Query query = session.createQuery(hql);
        /*賦值*/
        query.setProperties(teacher);
        /*查詢*/
        List list = query.list();
        /*遍歷*/
        for (Object t:list) {
            System.out.println(t);
        }

    }

五,通過類似智能標簽的方式綁定參數(多用於帶條件的多表操作)

    @Test
    /*通過自定義參數名的方式指定動態參數*/
    /*適合多表操作*/
    public void t04ParameterbyDongtai(){
        /*模擬前臺輸入參數*/
        Teacher teacher=new Teacher("a",400.00);


        /*hql語句*/
        StringBuffer hql=new StringBuffer("from Teacher where 1=1 ");

        if(teacher.getAddress()!=null){
            hql.append("and address=:teaAdd ");
        }
        if(teacher.getSal()>0){
            hql.append("and sal>:teasal ");
        }

        Query query = session.createQuery(hql.toString());
        /*賦值*/
        query.setParameter("teaAdd",teacher.getAddress());
        query.setParameter("teasal",teacher.getSal());
        /*查詢*/
        List list = query.list();
        /*遍歷*/
        for (Object t:list) {
            System.out.println(t);
        }

    }

Hibernate-ORM:07.Hibernate中的參數綁定