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

    一、在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.hibernate.Transaction;
    import org.hibernate.transform.Transformers;
    
    import bean.User;
    import util.HibernateUtil;
    
    /**
     * hibernate支持原生SQL语句操作
     * 
     * @author 半颗柠檬、
     * 
     */
    public class Query_SQL {
    
        public static void main(String[] args) {
             Query_SQL.testQuery(); // hibernate支持原生SQL语句的查询操作
    //        Query_SQL.insert(); // insert语句
        }
    
        private static void testQuery() {
    
            Session session = null;
            Transaction tran = null;
            SQLQuery sqlQuery = null;
            String sql = "";
            try {
                session = HibernateUtil.getSession();
                tran = session.beginTransaction();
    
                // HQL语句不能使用* , 而原生sql语句可以,且user对应的是数据库中的表名而不是bean的类名
                sql = " select * from user where username like :username ";
                sqlQuery = session.createSQLQuery(sql);
                sqlQuery.setString("username", "%user%");
    
                sqlQuery.setFirstResult(0);
                sqlQuery.setMaxResults(2);
                // 查询结果默认返回数组
                List<Object[]> objList = sqlQuery.list();
    
                System.out.println(objList.size());
    
                /**
                 * 查询结果返回一个bean
                 */
                sql = " select * from user where username like :username ";
                sqlQuery = session.createSQLQuery(sql);
                sqlQuery.setString("username", "%user%");
    
                // addScalar(String)方法作用:
                // 指定查询结果包含哪些数据列---没有被addScalar选出的列将不会包含在查询结果中。
                sqlQuery.addScalar("username");
                sqlQuery.addScalar("userid");
                
                // 把结果转为bean,注意bean的字段名要和数据库的字段名一致,区分大小写
                //如果数据库的字段和bean中的属性名不一致,这里的数据库中的is_admin和bean中的isadmin不一致,可以通过在sql语句中添加别名sql="select is_admin as isadmin"来使得
                //两者一致
                sqlQuery.setResultTransformer(Transformers.aliasToBean(User.class));
    
                List<User> userList = sqlQuery.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();
            }
    
        }
    
        private static void insert() {
    
            Session session = null;
            SQLQuery sqlQuery = null;
            Transaction tran = null;
            String sql = "";
            try {
                session = HibernateUtil.getSession();
                tran = session.beginTransaction();
    
                sql = "insert into user(userid,username,password) values(?,?,?)";
    
                sqlQuery = session.createSQLQuery(sql);
                sqlQuery.setParameter(0, 8);
                sqlQuery.setParameter(1, "user6");
                sqlQuery.setParameter(2, "123");
    
                int count = sqlQuery.executeUpdate();
                System.out.println("插入了" + count + "条数据");
    
                tran.commit();
            } catch (Exception e) {
                e.printStackTrace();
                tran.rollback();
            } finally {
                HibernateUtil.closeSession();
            }
    
        }
    
    }

     代码在下面章节

  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/shyroke/p/6849243.html
Copyright © 2011-2022 走看看