1. 程式人生 > >(六)Hibernate的增刪改查操作(2)

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

rac result jlist static 面向 原生 comm public set

一、在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() + "\t 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(); } } }

代碼在下面章節

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