(五)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()
                        + "\t 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()
                        + "\t 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()
                        + "\t 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()
                        + "\t userid=" + use1r.getUserid());

            }

            tran.commit();
        } catch (Exception e) {
            e.printStackTrace();
            tran.rollback();
        }finally{
            HibernateUtil.closeSession();
        }
    }
}
时间: 2024-11-10 00:25:39

(五)Hibernate的增删改查操作(2)的相关文章

Hibernate 基本增删改查操作

本文将要介绍Hibernate基本的增删改查的操作的实现,首先我们创建一个对象实例.一般情况下会创建User,本例也不例外需要创建这样的对象. [转载使用,请注明出处:http://blog.csdn.net/mahoking] User对象 public class User { private Integer id; private String userName; private String password; /*以下省略getter与setter*/ } 配置User.hbm.xml

Hibernate 批量增删改查操作

上文介绍Hibernate基本的增删改查,本例将介绍更实用的批量增删改查的操作的实现.本文中增删改查的操作,仅供参考.如果读者需要应用到实际的应用场景需要的话,需要在此基础上扩展与丰富. [转载使用,请注明出处:http://blog.csdn.net/mahoking] 在学习本例时,需要扩展一下Hibernate中Session的知识.Hibernate中的Session是一级缓存,可以理解为进程级的缓存.在进程运行期间一直存在.Session可以理解为一个可以操作数据库的对象 具体如何操作

(六)Hibernate的增删改查操作(2)

一.在Hibernate中使用原生SQL语句 sql语句面向的是数据库,所以sql语句中对应的不再是bean了,比如sql="select * from user"   在hql中*是无效的,但是在sql中可以使用,且user指的是数据库中的user表. 案例一: package action; import java.util.List; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.h

Java+MyEclipse+Tomcat (六)详解Servlet和DAO数据库增删改查操作

此篇文章主要讲述DAO.Java Bean和Servlet实现操作数据库,把链接数据库.数据库操作.前端界面显示分模块化实现.其中包括数据的CRUD增删改查操作,并通过一个常用的JSP网站前端模板界面进行描述.参考前文: Java+MyEclipse+Tomcat (一)配置过程及jsp网站开发入门 Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交 Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中 Java+MyE

(转)SQLite数据库增删改查操作

原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库--SQLite,SQLite3支持NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n).char(n).d

Scala对MongoDB的增删改查操作

=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! =========================================== 依赖环境:jdk1.8.Scala 2.12.idea mongodb Driver:3.1.1.注意,mongo for scala的驱动涉及多个jar(如下图),依赖于mongo-java-driver.jar 这里使用的sbt管理依赖,直接在bu

【greenDAO3】 项目搭建与增删改查操作

最近需要开始一个新的项目了,考虑到既然是新项目了,那么一些常用的框架肯定也要用当下最火的!这次的新项目中涉及到了本地数据存储,很早前有个项目的本地数据库框架用的是ActiveAndroid,github找了下这个框架,发现已经两年多已经没有更新了.然后就想到了一直没有时间去涉及到的greenDAO,github一搜索,哦呦?star有5000+,并且依然保持着很高的更新频率,并且性能远远的高于activeAndroid(见下图),果断选用. 刚开始想偷偷懒,大致浏览了下greenDAO官网后就开

作业员工信息表实现增删改查操作

有以下员工信息表 当然此表你在文件存储时可以这样表示 1 1,Alex Li,22,13651054608,IT,2013-04-01 现需要对这个员工信息文件,实现增删改查操作 可进行模糊查询,语法至少支持下面3种: select name,age from staff_table where age > 22 select  * from staff_table where dept = "IT" select  * from staff_table where enroll

基于Java的XML文件模拟数据库进行增删改查操作

我们知道XML文件既可以用来进行数据的传输,也可以配合DTD约束文件用来作为配置文件,当然其本质就是一个加了标签以及众多空格保持格式的字符串,那么就可以用Java进行操作. 本例是使用MyEclipse带入DOM4j解析时要用的jar包的基础上做的:当然DOM4j相对于DOM SAX 等解析方式的方便程度是不言而喻的. 下面是本次用例XML文件 <?xml version="1.0" encoding="UTF-8"?> <persons>