日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

      歡迎訪問 生活随笔!

      生活随笔

      當前位置: 首頁 > 编程语言 > php >内容正文

      php

      php findbysql,hibernate的findByExample

      發布時間:2024/9/27 php 25 豆豆
      生活随笔 收集整理的這篇文章主要介紹了 php findbysql,hibernate的findByExample 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

      用了這么長時間的hibernate/spring,如果不是今天用的findByExample方法到現在還不知道findByExample的機制。慚愧

      Class User{

      String username;

      String password = "默認口令";

      Company company;

      getter()&setter().....

      }

      Company company = companyDao.getById("id");

      User user = new User();

      user.setSid("主鍵");

      uer.setUsername("user");

      use.setCompany(company);

      userDao.findByExample(user);

      這個時候的SQL條件為:

      select * from user

      where username = ?

      and password = ?

      findByExample()使用時得出結論:

      1.不支持主鍵

      2.不支持關聯

      3.不支持NULL

      查詢示例

      org.hibernate.criterion.Example

      類允許你通過一個給定實例構建一個條件查詢。

      此實例的屬性值將做成查詢條件。

      Java代碼

      Cat cat = new Cat();

      cat.setSex('F');

      cat.setColor(Color.BLACK);

      List results = session.createCriteria(Cat.class)

      .add( Example.create(cat))

      .list();

      Example.create(cat) 表示根據cat這個對象來構造一個查詢條件。

      上面這條語句將查詢sex 為 F 而且Color為BLACK的所有Cat記錄。

      版本屬性、標識符和關聯被忽略。默認情況下值為null的屬性將被排除。

      可以自行調整Example使之更實用。

      Java代碼

      Example example = Example.create(cat)

      .excludeZeroes() //排除值為0的屬性

      .excludeProperty("color")

      //排除 color屬性

      .ignoreCase() //忽略大小寫

      .enableLike(); //啟用模糊查詢

      List results = session.createCriteria(Cat.class)

      .add(example)

      .list();

      甚至可以使用examples在關聯對象上放置條件。

      Java代碼

      List results = session.createCriteria(Cat.class)

      .add( Example.create(cat) )

      .createCriteria("mate")

      .add( Example.create( cat.getMate() ) )

      .list();

      關于使用Hibernate findByExample的注意事項

      from:http://www.85java.com/viewthread.php?tid=2259

      findByExample是一個很便利的查詢的方法,通過傳入的實例,進行條件匹配生成查詢語句。

      但之前一直很少用這個方法,原因是之前發現不知道什么情況下查詢結果跟自己想要生成的不同。還是學習方式不同吧,對于陌生的東西出現問題了就不管不用了,這樣是不行了。現在又遇到了,卻很快的發現問題所在了。

      原因其實很簡單,findByExample只為example中的基本類型屬性生效,如果example的屬性中有bean的話(一般有外鍵時就會出現了)就會無法轉成SQL查詢條件。甚至很多時候會產生where

      (1=1)的條件,相信會令人很迷惑。

      解決辦法很簡單吧,遇到這種情況可以直接使用SQL或條件查詢(Criteria),更推薦使用Criteria。

      下面是查詢參考:

      Java代碼

      @Override

      public AppsAccount findByUserAndApp(Users user, Apps app) {

      final DetachedCriteria query = DetachedCriteria

      .forClass(AppsAccount.class);

      Criteria criteria =

      query.getExecutableCriteria(getSession());

      criteria.add(Restrictions.eq("users", user));

      criteria.add(Restrictions.eq("apps", app));

      @SuppressWarnings("unchecked")

      List list =

      criteria.list();

      if (list != null &&

      !list.isEmpty()) {

      return list.get(0);

      }

      return null;

      }

      @Override

      public AppsAccount findByUserAndApp(Users user, Apps app) {

      final DetachedCriteria query = DetachedCriteria

      .forClass(AppsAccount.class);

      Criteria criteria =

      query.getExecutableCriteria(getSession());

      criteria.add(Restrictions.eq("users", user));

      criteria.add(Restrictions.eq("apps", app));

      @SuppressWarnings("unchecked")

      List list =

      criteria.list();

      if (list != null &&

      !list.isEmpty()) {

      return list.get(0);

      }

      return null;

      }

      因為是跟spring整合,所以用getSession()方法傳入session。

      AppsAccount.class類

      Java代碼

      public class AppsAccount implements java.io.Serializable {

      // Fields

      private static final long serialVersionUID =

      2255050572597512586L;

      private String id;

      private Users users;

      private Apps apps;

      private String account;

      總結

      以上是生活随笔為你收集整理的php findbysql,hibernate的findByExample的全部內容,希望文章能夠幫你解決所遇到的問題。

      如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。