Hibernate与数据库交互方式和Hibernate常用的几个方法
第一种,适合sql语言水平比较高的人用
1 @SuppressWarnings("unchecked")
2 @Override
3 @Transactional(propagation = Propagation.NOT_SUPPORTED)
4 public List<User> check(String username, String email, String peopleId) {
5 String hql = "from User where username=:uName or email=:email or peopleId=:PID";
6 Query q = factory.getCurrentSession().createQuery(hql);
7 q.setString("uName", username);
8 q.setString("email", email);
9 q.setString("PID", peopleId);
10 List list = q.list();
11 return list;
12 }
第二种,矮油,偶sql语言水平有点欠缺,用这个吧,""内是表格的字段名,这里千万要注意,字段名要和hbm.xml文件中字段名大小写一致。
1 @SuppressWarnings("unchecked")
2 @Override
3 @Transactional(propagation = Propagation.NOT_SUPPORTED)
4 public List<User> check(String username, String email, String peopleId) {
5 Criteria c = factory.getCurrentSession().createCriteria(User.class);
6 c.add(Restrictions.or(Restrictions.eq("userName", username),
7 Restrictions.or(Restrictions.eq("email", email), Restrictions
8 .eq("peopleId", peopleId))));
9 List list = c.list();
10 return list;
11 }
常用的几个方法:
分页:setFirstResult(num),从第num条记录开始,setMaxResults(num),总共num条记录。 查询:list();
另外还有排序
1 List cats = sess.createCriteria(Cat.class)
2 .add( Restrictions.like("name", "F%")
3 .addOrder( Order.asc("name") )
4 .addOrder( Order.desc("age") )
5 .setMaxResults(50)
6 .list();
7 List cats = sess.createCriteria(Cat.class)
8 .add( Property.forName("name").like("F%") )
9 .addOrder( Property.forName("name").asc() )
10 .addOrder( Property.forName("age").desc() )
11 .setMaxResults(50)
12 .list();
最后,还是建议用Hibernate官方推荐的HQL查询方式。
Hibernate与数据库交互方式和Hibernate常用的几个方法的更多相关文章
- hibernate操纵数据库常用方法 及 hibernate对象的三种状态
在dao层使用hibernate语言来与数据库进行访问,hibernate作为面向对象思想开发的dao层框架其理解也需要以面向对象的思想来看待 使用.hibernate不仅支持使用者使用他提供的对象来 ...
- 根据数据库的表生成项目,项目变为hibernate项目(实际开发中常用)
1. 选择模式为Myeclipse Database Explorer perpective 2. (1)右键建立mysql模板,选择默认的mysql模板 (2)drive name (任意这里取m ...
- 关于Hibernate 的数据库配置
<hibernate-configuration> <session-factory name="mySessionFactory"> ...
- Hibernate与数据库分表
数据库分片(shard)是一种在数据库的某些表变得特别大的时候采用的一种技术. 通过按照一定的维度将表切分,可以使该表在常用的检索中保持较高的效率,而那些不常用的记录则保存在低访问表中.比如:销售记录 ...
- 使用Hibernate Tools从数据库逆向生成Hibernate实体类
自动生成model.java.*.hbm.xml 甚至是dao.java.*.ddl.*.html等等.一般也就如下三种方式1. MyEclipse 自带插件2. jboss的 hibernate-t ...
- Hibernate 查询数据库中的数据
1.Criteria介绍 Criteria与Session绑定,其生命周期跟随着Session结束而结束,使用Criteria时进行查询时,每次都要于执行时期动态建立物件,并加入各种查询条件,随着Se ...
- hibernate中数据库方言
在配置hibernate.cfg.xml时需指定使用数据库的方言: 例: <property name="dialect">org.hibernate.dialect. ...
- eclipse从数据库逆向生成Hibernate实体类
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO.意思是,在项目设计时,要么 ...
- hibernate操作数据库例子
1.工程目录结构如下 2.引入需要的jar包,如上图. 3.创建持久化类User对应数据库中的user表 package com.hibernate.配置文件.pojo; import java.sq ...
随机推荐
- win7+ubuntu双系统安装
XP+ubuntu双系统可參考 xp硬盘上安装ubuntu12.04双系统 1.XP安全不再,最终将吾等磨机的人逼上梁山,是时候做一个win7+ubuntu的双系统了. 废话少说,直接进入主题,先腾出 ...
- vuex-along解决vuex中存储的数据在页面刷新之后失去的问题
1. 为什么会失去? vuex可以看成是一个"提升变量"的一个工具,它是将state当做全局变量存储.F5刷新页面之后自然随着页面的刷新重新初始化state. 2. 如果解决数据保 ...
- pytest_fixture-----conftest共享数据及不同层次共享
场景:你与其他测试工程师合作一起开发时,公共的模块要在不同文件中,要 在大家都访问到的地方. 解决:使用conftest.py 这个文件进行数据共享,并且他可以放在不同位置起 着不同的范围共享作用. ...
- MJExtension常用方法
一.MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据.等等,如果我们自己全部手动去创建模型并 ...
- netstat -pa --unix >>test.txt
netstat -pa --unix >>test.txt 输出套接字 命名socket信息
- react css拓展 使用less
react 之中使用less 其实质只需要看一下resct 使用css的配置项,就能明白个大概了 第一步 还是下载 npm i less less-loader -save 下载less 和 ...
- Ruby 数据类型
Ruby 数据类型 本章节我们将为大家介绍 Ruby 的基本数据类型. Ruby支持的数据类型包括基本的Number.String.Ranges.Symbols,以及true.false和nil这几个 ...
- 并查集+multiset+双指针——cf982D
感觉自己的解法很复杂,写了一大堆代码 但核心是从小到大枚举每个元素的值,然后把<=当前元素的值进行合并,由于这个过程是单调的,所以可以直接将新的元素合并到旧的并查集里去 维护并查集的同时维护每 ...
- 47 ubuntu指令整理学习
0 引言 在使用ubutnu时,积累了大量命令笔记.但是这些笔记比较零散,没有系统性,不便于查找和使用.通过系统性.分门别类地整理,希望可以增强对指令的记忆,提高工作效率,对ubuntu的使用更加地道 ...
- Portainer Exec Container 失败解决方案
近日,将portainer服务挂了个域名,然后用Nginx代理的时候发现不能attach容器了,经过搜索在issue 找到解决方案 1.修改Nginx config server { listen 8 ...