zoukankan      html  css  js  c++  java
  • Hibernate之hql

    Street实体类

    public class Street {
    
        public Street() {
        }
    
        public Street(String name) {
            this.name = name;
        }
    
        private Integer id;
        private String name;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getDistrict_id() {
            return district_id;
        }
    
        public void setDistrict_id(String district_id) {
            this.district_id = district_id;
        }
    
        private String district_id;
    }
    

     Street.hbm.xml小配置

    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <hibernate-mapping package="cn.hibernate.day01.entity">
        <!--实体 name=实体端的内容   column=DB端的内容-->
        <class name="Street" table="STREET" dynamic-update="true">
            <!--和底层数据表对应的主键   业务意义-->
            <id name="id" column="ID">
                <!--主键生成策略 :assigned:程序员手动给值-->
                <generator class="native"/>
            </id>
            <property name="name" column="NAME"></property>
            <property name="district_id" column="DISTRICT_ID"></property>
        </class>
    
    </hibernate-mapping>
    

      hibernate.cfg.xml大配置

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    
    <hibernate-configuration>
       <!--创建Session的基础配置-->
        <session-factory>
            <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
            <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
            <property name="connection.username">zyx</property>
            <property name="connection.password">zyx</property>
            <!-- SQL dialect (方言)-->
            <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
            <!-- Echo   all executed SQL to stdout 在控制台打印sql -->
            <property name="show_sql">true</property>
            <!--格式化SQL-->
            <property name="format_sql">true</property>
            <!-- Drop and re-create (重新创建)the database schema(架构) on startup (启动)
             是否根据hbm.xml自动建表 建表的策略 update create
            -->
            <property name="hbm2ddl.auto">update</property>
             <!--关联小配置 -->
            <mapping resource="cn/hibernate/day01/entity/Street.hbm.xml"/>
    
        </session-factory>
    
    </hibernate-configuration>
    

      

    1,获取部分列查询

    public void t5(){
            Configuration cfg=new Configuration().configure();
            //1.Session
            SessionFactory factory=cfg.buildSessionFactory();
            //2.session
            Session session=factory.openSession();  //从连接池中随机取出链接
            //3.操作
            Transaction tx=session.beginTransaction();
            String hql="select new Street(d.name)from Street d";
            Query query=session.createQuery(hql);
            List<Street> list=query.list();
            for (Street street:list) {
                System.out.println(street.getName());
            }
    
            tx.commit();
            session.close();
    
    }
    

     2,参数查询,匿名占位符

    public void t6(){
            Configuration cfg=new Configuration().configure();
            //1.Session
            SessionFactory factory=cfg.buildSessionFactory();
            //2.session
            Session session=factory.openSession();  //从连接池中随机取出链接
            //3.操作
            Transaction tx=session.beginTransaction();
            String hql="from Street d where d.name=?";
            Query query=session.createQuery(hql);
            query.setParameter(0,"李四1");
            List<Street> list=query.list();
            for (Street street:list
            ) {
            System.out.println(street.getName());
            }
    
            tx.commit();
            session.close();
    
            }
    

     3,参数查询,参数名绑定

      public void t7(){
            Configuration cfg=new Configuration().configure();
            //1.Session
            SessionFactory factory=cfg.buildSessionFactory();
            //2.session
            Session session=factory.openSession();  //从连接池中随机取出链接
            //3.操作
            Transaction tx=session.beginTransaction();
            String hql="from Street d where d.name=:name";
            Query query=session.createQuery(hql);
            query.setParameter("name","李四1");
            List<Street> list=query.list();
            for (Street street:list
                    ) {
                System.out.println(street.getName());
            }
    
            tx.commit();
            session.close();
    
        }
    

      

    4,参数查询,参数名绑定加对象属性

    public void t8(){
            Configuration cfg=new Configuration().configure();
            //1.Session
            SessionFactory factory=cfg.buildSessionFactory();
            //2.session
            Session session=factory.openSession();  //从连接池中随机取出链接
            //3.操作
            Transaction tx=session.beginTransaction();
            String hql="from Street d where d.name=:name";
            Query query=session.createQuery(hql);
            Street street=new Street();
            street.setName("李四1");
            query.setProperties(street);
            List<Street> list=query.list();
            for (Street item:list
                    ) {
                System.out.println(item.getName());
            }
    
            tx.commit();
            session.close();
    
        }
    

      5,动态sql

     public void t9(){
            Configuration cfg=new Configuration().configure();
            //1.Session
            SessionFactory factory=cfg.buildSessionFactory();
            //2.session
            Session session=factory.openSession();  //从连接池中随机取出链接
            //3.操作
            Transaction tx=session.beginTransaction();
    
            Street street=new Street();
            street.setName("李四1");
            street.setId(1);
    
           StringBuilder sb=new StringBuilder("from Street e where 1=1 ");
    
           if(street.getName()!=null){
             sb.append("and e.name=:name ");
           }
            if(street.getId()!=null){
              sb.append("and e.id>:id");
            }
    
            Query query=session.createQuery(sb.toString());
    
            query.setProperties(street);
            List<Street> list=query.list();
            for (Street item:list
                    ) {
                System.out.println(item.getName());
            }
    
            tx.commit();
            session.close();
    
        }
    

      

  • 相关阅读:
    leetcode 86. Partition List
    leetcode 303. Range Sum Query
    leetcode 1310. XOR Queries of a Subarray
    leetcode 1309. Decrypt String from Alphabet to Integer Mapping
    leetcode 215. Kth Largest Element in an Array
    将numpy.ndarray写入excel
    leetcode 1021 Remove Outermost Parentheses
    leetcode 1306. Jump Game III
    leetcode 1305. All Elements in Two Binary Search Trees
    ICCV2019 oral:Wavelet Domain Style Transfer for an Effective Perception-distortion Tradeoff in Single Image Super-Resolution
  • 原文地址:https://www.cnblogs.com/spghs/p/8119267.html
Copyright © 2011-2022 走看看