<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          EntityD 語言的 ORM 框架

          聯(lián)合創(chuàng)作 · 2023-09-30 01:50

          Entity 是 D 語言( DLang )數(shù)據(jù)庫操作 ORM 框架,設(shè)計(jì)參照 javax JPA 實(shí)現(xiàn),具有很好的擴(kuò)展性和規(guī)范性,數(shù)據(jù)庫驅(qū)動依賴 HuntLabs 開發(fā)的 database for dlang

          特性

          1. 實(shí)現(xiàn)了完整的 CriteriaQuery 支持

          2. Repository 也有部分封裝

          3. 完全對象化查詢,不用考慮底層數(shù)據(jù)庫驅(qū)動

          4. 實(shí)現(xiàn) EQL(Entity Query Language)實(shí)現(xiàn)對象化 SQL 查詢語言

          支持的數(shù)據(jù)庫

          • PostgreSQL 9.0+

          • MySQL 5.1+

          使用示例

          import hunt.entity;
          
          @Table("users")
          class User : Entity
          {
              @PrimaryKey
              @AutoIncrement
              int id;
          
              string name;
              double money;
              string email;
              bool status;
          }
          
          void main()
          {
              DatabaseOption options = new DatabaseOption("mysql://root:123456@localhost:3306/huntblog?charset=utf-8");
              EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", options);
              EntityManager em = entityManagerFactory.createEntityManager();
          
              // begin transaction
              em.getTransaction().begin();
          
              // define your database existing row id in here
              int id = 10;
          
              auto user = em.find!User(id);
              log("User name is: ", user.name);
          
              // commit transaction
              em.getTransaction().commit();
          
              em.close();
              entityManagerFactory.close();
          }

          Insert row

              auto user = new User();
              user.name = "Brian";
              user.email = "[email protected]";
              user.money = 99.9;
              
              // insert user
              em.persist(user);
              log("User id is: ", user.id);

          Delete row

              int n = em.remove!User(id);
              log("The number of users deleted is: ", n);

          Update row

              auto user = em.find!User(id);
              log("User name is: ", user.name);
              user.name = "zoujiaqing";
              em.merge!User(user);
              log("The number of users updated is: ", n);

          Use CriteriaQuery to find

              // create CriteriaBuilder object from em
              CriteriaBuilder builder = em.getCriteriaBuilder();
          
              CriteriaQuery!User criteriaQuery = builder.createQuery!User;
              Root!User root = criteriaQuery.from();
              Predicate p1 = builder.equal(root.User.id, id);
              TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(p1));
          
              auto user = typedQuery.getSingleResult();
          
              log("User name is: ", user.name);

          Use CriteriaQuery to Multi-condition find

              // create CriteriaBuilder object from em
              CriteriaBuilder builder = em.getCriteriaBuilder();
          
              CriteriaQuery!User criteriaQuery = builder.createQuery!User;
              Root!User root = criteriaQuery.from();
          
              Predicate p1 = builder.lt(root.User.id, 1000);  // User id is less than 1000.
              Predicate p2 = builder.gt(root.User.money, 0);  // User money is greater than 0.
              Predicate p3 = builder.like(root.User.name, "z%");  // User name prefix is z.
          
              TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(builder.and(p1, p2), p3));
              User[] users = typedQuery.getResultList();
          
              log("The number of users found is: ", users.length);

          EQL 使用

          // Example for sample SELECT
          auto query = em.createQuery!(User)("SELECT u FROM User u");
          
          foreach(user; query.getResultList())
          {
          	logDebug(user.name);
          }
          

           

          瀏覽 19
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美黄色成人视频 | 亚洲AV无码成人国产精品色 | 国产在线观看av 九色视频在线观看 | 亚洲无 码A片在线 | 操国产嫩逼美女 |