数据库查询方法汇集(笔记)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hibernate:
首先,在配置文件hibernate.cfg.xml中配置数据源
其次,在HibernateSessionFactory中加载配置文件(数据源)初始化并创建session 用持久化对象hibernate时从创建Session session开始:
Session session = sessionfactory.openSession();
有session后可创建Criteria、Query、SQLQuery对象操作数据库
Spring:
首先,在spring.xml中配置sessionFactory数据源以及mapping等资源
其次,在dao类的配置中需要注入sessionFactory,继承HibernateDaoSupport类
然后,利用HibernateTemplate模板类进行操作数据库
如果用到分页查询,需要创建获得session对象
return (List) getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException {
Query query = session.createQuery(queryString);
query.setProperties(args);
return query.list();
}
});
如果用纯SQL,可用sping的JdbcTemplate的模板方法进行操作数据库,需要在dao 类中注入dataSource,并继承JdbcTemplate
如下:
private JdbcTemplate jdbcTemplate;
private DataSource dataSource;
public JdbcTemplate getJdbcTemplate() {
if (jdbcTemplate == null) {
jdbcTemplate = new JdbcTemplate(dataSource);
}
return jdbcTemplate;
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
1.创建一个条件面向对象的查询对象Criteria
Criteria : 代表一次查询
Criterion:代表一个查询条件
Restrictions:代表查询条件的工具类。
步骤:1 获取Hibernate的Session对象
2.已Session对象创建Criteria对象
3.使用Restrictions的静态方法创建Criterion
4.向Criteria查询中添加查询条件
5.执行Criteria的List方法返回查询结果
Criteria criteria = session.createCriteria(Class persistentClass) criteria.add(Expression.eq("name","zgl"));
备注:条件表达式:Expression 和Restrictions关系–继承
ng.Object
org.hibernate.criterion.Restrictions
org.hibernate.criterion.Expression
对象:DetachedCriteria
为了查询条件和Session分离而重复使用查询条件,使用DetachedCriteria对象DetachedCriteria detachedCriteria =
DetachedCriteria.forClass(MyTest.class);
detachedCriteria.add(Expression.eq("name", "zgl"));
detachedCriteria.addOrder(Order.asc("age"));
当查询时再和session绑定:
Criteria c = detachedCriteria.getExecutableCriteria(session);
Iterator it = c.list().iterator();
类Projections:分组、统计
2. 创建HQL语句查询对象Query
public Query createQuery(String queryString)throws HibernateException S tring hql = "from com.Ts_User";
Query query = session.createQuery(hql);
List querylist = query.list();
【提示】HQL语句中对象路径写全路径类名,并区分大小写
A属性查询:查询结果只需要对象的某个属性
如:只需name 和age 两个属性,则用查询结果为Object[]数组
String HQL = “select name , age from Ts_User ”;
B:提供更新语句
String HQL = “update Ts_User set age=18 ”;
Query query = session.createQuery(hql);
Int ret = query.executeUpdate();
C:删除一样
String HQL =”delete Ts_User where age=18”
D:参数