hibernate汇总
来源:互联网 发布:新版淘宝怎么收藏店铺 编辑:程序博客网 时间:2024/05/18 19:23
package com.bjpowernode.hibernate; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils { private static SessionFactory factory; //static只初始化一次. static { try{ //默认读取的是hibernate.cfg.xml 文件. Configuration cfg = new Configuration().configure(); //建立SessionFactory. factory = cfg.buildSessionFactory(); }catch(Exception e ) { e.printStackTrace(); } } public static Session getSession() { //打开session. return factory.openSession(); } //关闭session. public static void closeSession(Session session) { //判断是否为空. //判断是否是打开状态再进行关闭. if(session!=null) { if(session.isOpen()) { session.close(); } } } //返回工厂类. public static SessionFactory getSessionFactory() { return factory; } }
session的增删改查:
增:
session.save(user);
删:
session.delete(user);
改:
session.update(user);
查:
Queryquery = session.createQuery("from User");
ListuserList = query.list();
hibernate使用sql查询:
注意newHibernateCallback<Integer>()中的类型跟内部类返回值类型一致
public List<Object[]> getRoles(){ return getHibernateTemplate().executeFind(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { Query q = session.createSQLQuery("select Role_Id, RoleDescription, RoleName from dbo.Role"); return q.list(); } }); }
/** * 标记公告已读 * @param userId * @param noticeId * @return */ public Integer markReadOver(final int userId,final int noticeId){ final String sql_update_info="update REL_NOTICE_USERINFO set READ_OVER=? where NOTICE_ID=? and USER_ID=?"; return getHibernateTemplate().execute(new HibernateCallback<Integer>() { @Override public Integer doInHibernate(Session session) throws HibernateException, SQLException { int count=session.createSQLQuery(sql_update_info) .setInteger(0, 1) .setInteger(1, noticeId) .setInteger(2, userId) .executeUpdate(); return count; } }); }
hibernate中sql参数绑定:
1.参数名称前面的冒号表示这是一个具名参数。
String queryString = "from Item item where item.description like :search";
uery q = session.createQuery(queryString).setString("search",searchString);2.定位参数
String queryString = "from Item item where item.description like ? and item.date > ?"; Query q = session.createQuery(queryString).setString(0,searchString).setDate(1,minDate);
绑定参数位置的每一个变化都需要改变参数绑定代码,这样就产生了易碎和更需要维护的代码,建议避免使用定位
参数。如果必须使用定位参数,要记住hibernate是从0开始计数(JPA是从1开始记数);
3.查询有外键关联的表中的信息:
/** * 查询未批阅的用户 * @param readOver * @return */public List<RelNoticeUserInfo> selectUserInfoByParam(final int readOver,final int noticeId){ return getHibernateTemplate().execute(new HibernateCallback<List<RelNoticeUserInfo>>() { @Override public List<RelNoticeUserInfo> doInHibernate(Session session) throws HibernateException, SQLException { Criteria cri = session.createCriteria(RelNoticeUserInfo.class); cri.add(Expression.eq("readOver", readOver)); cri.createAlias("eduNotice", "e"); //根据id查询关联表中所有信息 cri.add(Restrictions.eq("e.noticeId",noticeId)); List<RelNoticeUserInfo> resultList= cri.list(); return resultList; } });}4、hibernate查询不区分大小写 HQL Criteria如果是使用HQL,可以使用lower或者upper函数来实现 例1:from User u where lower(u.username)=lower(’Mp3′) 这样就可以查出来mp3,mP3等用户了! 例2:String hql = "select distinct userName from User where upper(userName) like upper('%" + userName + "%')";如果使用Criteria,首先使用Restrictions创建Criterion 如果是字符串相等匹配Restrictions.eq(’username’,'mp3′).ignoreCase()如果是字符串模糊匹配Restrictions.ilike(’username’,'mp3′)或者Restrictions.like(’username’,'mp3′).ignoreCase()5、sql与hql的区别:sql 面向数据库表查询hql 面向对象查询hql : from 后面跟的 类名+类对象 where 后 用 对象的属性做条件 并且hql(前面提到它是OO的)中那么对象类的名称和属性确实大小写敏感的(符合java编程语法)。 sql: from 后面跟的是表名 where 后 用表中字段做条件查询在Hibernate中使用查询时,一般使用Hql查询语句。HQL(Hibernate Query Language),即Hibernate的查询语言跟SQL非常相像。不过HQL与SQL的最根本的区别,就是它是面向对象的。
0 0
- hibernate汇总
- Hibernate汇总
- hibernate错误汇总
- Hibernate配置文件标签汇总
- Hibernate 资料汇总
- hibernate 错误汇总
- hibernate面试汇总
- hibernate博客汇总
- hibernate 查询方法汇总
- hibernate 查询方式汇总
- hibernate常见错误汇总
- hibernate、Spring常见问题汇总
- hibernate笔记汇总1
- hibernate笔记汇总2
- Hibernate查询方式汇总
- Hibernate查询方式汇总
- hibernate查询汇总
- Hibernate查询方式汇总
- 在mac中使用git-flow
- **原创**零基础学ios**UI课程03***汤姆猫动画效果实现代码
- qt 5.5.1 连接 mysql 5.7.9
- 哔了狗的省市区
- Android之实时监控网络状态
- hibernate汇总
- java虚拟机垃圾回收机制
- 测试类 模拟http请求 运用Jodd包
- 【Linux】ubuntu下安装JDK、Tomcat
- 对将关系模式分解为高级范式的认识
- linux 下安装WebBench进行web 性能测试
- switch case 有相同的 case 值的时候
- Eclipse、SDK、ADT资源下载
- 数据结构实验之排序四:寻找大富翁