码迷,mamicode.com
首页 > Web开发 > 详细

进阶的Hibernate

时间:2015-06-11 21:13:52      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

计应134(实验班) 幸南霖  

学习了Hibernate才知道连接数据库原来可以这么省事,Java Dao真的是牛得一逼 啊!

  查询总结:

  1.使用HQL语句   Query q = session.createQuery("select e from com.sun.demo.Emp e");  

  2.使用Load方法(主键查询)   Emp e = (Emp)session.load(Emp.class, 1141);  

  3 .使用get方法(主键查询)   Emp e = (Emp)session.get(Emp.class, 1141);  

  4.参数化查询(使用?通配符,或者命令通配符)   Query q = session.createQuery("update Userinfo set ename=‘AAA‘ WHERE ename=?");          q.setParameter(0, "SMITH");  

Query q = session.createQuery("update Userinfo set ename=‘AAA‘ WHERE ename like ?");         

q.setParameter(0, "%M%");  

Query q = session.createQuery("update Userinfo set ename=‘AAA‘ WHERE ename like :lkename");         

q.setParameter("lkename", "%L%"); 

   5.命名查询(将查询语句放在一起,增加了系统的可维护性)   在*.hbm.xml中添加hql语句如下,注意放在class标签外面   <query name="myquery">       <![CDATA[        from com.sun.hibernate.Employer where job = ?       ]]>   </query>

Query q = session.getNamedQuery("myquery");   q.setParameter(0, "MANAGER"); 

   6. 属性查询   Query q = session.createQuery("select max(sal) from Employer e where sal is not null");   Query q = session.createQuery("select distinct job from Employer e");  

  7.实例化查询   步骤如下:  

  (1).编写你的HQL语句  

  (2).创建普通的Java类 -------------------与POJO类不同,它与数据库没有任何关系  

  (3).在该java类中你需要创建和查询结果对应的字段  

  (4).在该java类中,你需要创建合适的构造函数  

  (5).完善你的HQL语句,使用实例化查询的方式进行包装  

  (6).通过list.get(i)获取的结果就不再是一个数组,而是一个包装后的对象

  最后来一段代码做为 Ending吧。

import org.hibernate.Transaction;

import org.hibernate.SessionFactory;

import org.hibernate.Session;

import org.hibernate.cfg.Configuration;

import java.util.List;

import org.hibernate.Query;

import java.util.Iterator;

 

public class HbmTestDao {

private static SessionFactory sessionFactory = null;

private Session session = null;

Transaction transaction = null;

static{

try{

sessionFactory = new Configuration().configure().buildSessionFactory();

 

}catch(Exception e){

e.printStackTrace();

}

}

/**

* 查询方法

* @return

*/

public List selectTb(){

List list = null;

session = sessionFactory.openSession();

transaction = session.beginTransaction();

String hql = "from Test";

try{

Query query = session.createQuery(hql);

list = query.list();

}catch(Exception e){

e.printStackTrace();

}

transaction.commit();

session.close();

 

return list;

}

 

/**

* 模糊查询;

*/

public List selectByName(String name){

List it = null;

String hql = "select user from Test as user where user.name like:name";

session = sessionFactory.openSession();

transaction = session.beginTransaction();

Query query = session.createQuery(hql);

query.setString("name","%"+name+"%");

it = query.list();

transaction.commit();

session.close();

return it;

}

/**

* 根据ID查询

*/

public List selById(Integer id){

List list = null;

String hql = "from Test where id = "+id;

session = sessionFactory.openSession();

Query query = session.createQuery(hql);

//query.setInteger("id",id.intValue());

list = query.list();

session.beginTransaction().commit();

session.close();

return list;

}

 

/**

* 插入方法;

*/

public int insertTb(Test test){

int i=0;

session = sessionFactory.openSession();

 

try{

session.beginTransaction();

session.save(test);

session.beginTransaction().commit();

i=1;

}catch(Exception e){

e.printStackTrace();

}

session.close();

return i;

}

 

/**

* 删除方法;

*/

public int DelTb(Integer id){

int i = 0;

session = sessionFactory.openSession();

try{

session.beginTransaction();

Test test = (Test)session.get(Test.class,id);

session.delete(test);

session.beginTransaction().commit();

session.close();

i = 1;

}catch(Exception e){

e.printStackTrace();

}

 

return i;

}

/**

* 更新方法;

*/

public int UpTb(Test test){

int i = 0;

session = sessionFactory.openSession();

try{

session.beginTransaction();

session.update(test);

session.beginTransaction().commit();

session.close();

i = 1;

}catch(Exception e){

e.printStackTrace();

}

return i;

}

}

进阶的Hibernate

标签:

原文地址:http://www.cnblogs.com/9527leo/p/4570089.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!