zoukankan      html  css  js  c++  java
  • (五)Hibernate的增删改查操作(2)

    • 接上一章节 HQL的预编译语句

     HIbernate中的预编译与Spring的预编译的处理差不多。
     
      1:使用标准的?
     
      2:使用命名参数
     
       2.1:使用名称逐个设置。
     
        2.2:使用Map(key的值等于参数的名称)
     
        2.3:使用Bean(属性的名称等于参数的名称)

    案例一:Query_HQL_Prepared.java

    package action;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    
    import bean.User;
    import util.HibernateUtil;
    
    /**
     * 本类测试HQL的预处理指令
     * 
     * HIbernate中的预编译与Spring的预编译的处理差不多。
     * 
     * 1:使用标准的?
     * 
     *   2:使用命名参数
     * 
     *    2.1:使用名称逐个设置。
     * 
     *    2.2:使用Map(key的值等于参数的名称)
     * 
     *    2.3:使用Bean(属性的名称等于参数的名称)
     * 
     * @author 半颗柠檬、
     * 
     */
    public class Query_HQL_Prepared {
    
        public static void main(String[] args) {
            // Query_HQL_Prepared.one(); // 使用标准的 ?
            // Query_HQL_Prepared.two(); //使用名称逐个设置。
    //        Query_HQL_Prepared.three(); // 使用Map(key的值等于参数的名称)
            Query_HQL_Prepared.four();   //使用Bean(属性的名称等于参数的名称)
        }
    
    
    
        /*
         * 使用标准的?
         */
        private static void one() {
            Session session = null;
            Transaction tran = null;
            Query query = null;
            String hql = "";
            try {
    
                session = HibernateUtil.getSession();
                tran = session.beginTransaction();
                hql = " select u from User u where userid<=? and userid>=? and username like ?";
    
                /**
                 * HQL的索引是从0开始的
                 */
                query = session.createQuery(hql);
                query.setParameter(0, 6);
                query.setParameter(1, 1);
                query.setParameter(2, "%user%");
    
                List<User> userList = query.list();
    
                for (User user : userList) {
    
                    System.out.println("username=" + user.getUsername()
                            + "	 userid=" + user.getUserid());
    
                }
    
                tran.commit();
            } catch (Exception e) {
                tran.rollback();
                e.printStackTrace();
    
            } finally {
                HibernateUtil.closeSession();
            }
    
        }
    
        /**
         * 使用名称逐个设置
         */
        private static void two() {
            Session session = null;
            Query query = null;
            Transaction tran = null;
            String sql = "";
            try {
    
                session = HibernateUtil.getSession();
                tran = session.beginTransaction();
                sql = "  select u from User u where username like :username and  userid>= :userid_begin  and  userid<= :userid_end ";
    
                query = session.createQuery(sql);
                query.setString("username", "%user%");
                query.setInteger("userid_begin", 3);
                query.setInteger("userid_end", 5);
    
                List<User> userList = query.list();
    
                for (User user : userList) {
    
                    System.out.println("username=" + user.getUsername()
                            + "	 userid=" + user.getUserid());
    
                }
    
                tran.commit();
            } catch (Exception e) {
                e.printStackTrace();
                tran.rollback();
            } finally {
                HibernateUtil.closeSession();
            }
    
        }
    
        /**
         * 使用Map(key的值等于参数的名称)
         */
        private static void three() {
    
            Session session = null;
            Transaction tran = null;
            Query query = null;
            String sql = "";
    
            try {
                session=HibernateUtil.getSession();
                tran=session.beginTransaction();
                
                sql=" select  u from User u where userid>= :userid_begin and userid<= :userid_end and username like :username";
                query=session.createQuery(sql);
                
                Map<String,Object> sqlMap=new HashMap<String,Object>();
                sqlMap.put("userid_begin", 3);
                sqlMap.put("userid_end",5);
                sqlMap.put("username", "%user%");
                
                query.setProperties(sqlMap);
                
                List<User> userList = query.list();
    
                for (User user : userList) {
    
                    System.out.println("username=" + user.getUsername()
                            + "	 userid=" + user.getUserid());
    
                }
                
                tran.commit();
            } catch (Exception e) {
                e.printStackTrace();
                tran.rollback();
            } finally {
                HibernateUtil.closeSession();
            }
    
        }
    
        
        /**
         * 使用Bean(属性的名称等于参数的名称)
         */
        private static void four() {
        
            Session session = null;
            Query query = null;
            Transaction tran = null;
            String sql="";
            
            try {
                session=HibernateUtil.getSession();
                tran=session.beginTransaction();
                
                sql=" select u from User u  where username like :username and userid>= :userid_begin and  userid<= :userid_end  "; 
                
                User user=new User();
                user.setUsername("%user%");
                user.setUserid_begin(3);   //User bean中一定要有userid_begin和userid_end属性,且要有get和set方法
                user.setUserid_end(5);
                
                query=session.createQuery(sql);
                query.setProperties(user);
                
                List<User> userList = query.list();
    
                for (User use1r : userList) {
    
                    System.out.println("username=" + use1r.getUsername()
                            + "	 userid=" + use1r.getUserid());
    
                }
                
                
                tran.commit();
            } catch (Exception e) {
                e.printStackTrace();
                tran.rollback();
            }finally{
                HibernateUtil.closeSession();
            }   
        }
    }
  • 相关阅读:
    线性可分支持向量机
    谈对牛顿法的理解
    最大熵模型学习笔记
    Maven --- <distributionManagement>标签
    poi-word导出,导出多图片到word
    poi-excel导入导出
    ApplicationContextInitializer接口
    springboot伪静态
    springboot集成邮件服务
    多文件上传demo
  • 原文地址:https://www.cnblogs.com/shyroke/p/6848987.html
Copyright © 2011-2022 走看看