1. 程式人生 > >(七)Hibernate中使用JDBC

(七)Hibernate中使用JDBC

alt work 方法 代碼 cep cti 一個 sdm admin

  • 在hibernate中獲取connection數據庫連接有兩種方法:(操作數據庫常用這種方法)
  • 1. session.doReturningWork 返回一個對象,適用於查詢方法
  • 2. session.doWork 不返回對象,適用於增刪改

案例一:

package action;

import java.sql.Connection;
import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.cache.spi.QueryResultsRegion; import org.hibernate.jdbc.ReturningWork; import bean.User; import util.HibernateUtil; public class Query_JDBC { public static void main(String[] args) { Query_JDBC.jdbc(); }
/** * 在Hibernate中獲取Connection接口 */ private static void jdbc() { Session session = null; Transaction tran = null; try { session = HibernateUtil.getSession(); tran = session.beginTransaction(); User user = session.doReturningWork(new
ReturningWork<User>() { @Override public User execute(Connection conn) throws SQLException { QueryRunner queryRunner = new QueryRunner(); String sql = "select username,userid,is_admin as isadmin from user where userid=1"; //數據庫中的is_admin和bean中的isdmin不一致 User user = queryRunner.query(conn, sql, new BeanHandler<User>(User.class)); return user; } }); System.out.println("username=" + user.getUsername() + "\t" + "userid=" + user.getUserid() + "\t" + "isadmin?" + user.getIsAdmin()); tran.commit(); } catch (Exception e) { e.printStackTrace(); tran.rollback(); } finally { HibernateUtil.closeSession(); } } }

結果:

技術分享

代碼在下面章節

(七)Hibernate中使用JDBC