标签:
计应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;
}
}
标签:
原文地址:http://www.cnblogs.com/9527leo/p/4570089.html