hibernate中的与数据库操作的那些事儿
来源:互联网 发布:汉王光学识别软件 编辑:程序博客网 时间:2024/09/21 09:29
一、基本的操作
数据库中有主键自增字段id,name和password
1、增加save
User user=new User();user.setName("zgf");user.setPassword("123");session.save(user);//向user表中插入一条记录,插入2、删除delete
//得到被删除的对象:查询User user=(User)session.get(User.class,2);//2为id编号。Iteger,String 包装类都实现了Serializable接口session.delete(user);3、修改update
User user=(User)session.get(User.class,2);user.setPassword("12345");session.update(user);4、查询get load
get方法:
User user=(User)session.get(User.class,2);
load(懒加载,延时加载)
User user=(User)session.load(User.class,2);区别:
使用get()查询就直接发送sql语句到数据库,进行查询,并把查询结果封装成User对象返回。
使用load()没有数据库去查询,生成了一个User的代理对象,该代理对象只有id属性有值,User_$$_javassist代理对象 是User的子类,基于子类的代理.当使用user对象时,才去数据库查询。代理对象中有一个initialized属性,当出现重复查询时,会根据该属性的值是否是true决定是否再去查询。当在使用user对象前关闭资源,user对象不能再获取。
注:例如上例中涉及到多条sql语句查询时,要开启事务
Transaction tran=session.beginTransaction();。。。tran.commit();或者:session.beginTransaction();。。。session.getTransaction().commit();
二、HQL hibernate query language :面向对象
1、查询所有记录
Query query=session.createQuery("from com.zgf.domain.User");//注意:不是表名,面向对象的类List<User> list=query.list(); //多个user对象2、查询一条记录
Query query=session.createQuery("from com.zgf.domain.User where id=2");User user=(User) query.uniqueResult();3、分页查询:limit (currentPage-1)*pageSize,pageSize
Query query=session.createQuery("from com.zgf.domain.User");query.setFirstResult(0);//从第几条记录开始查query.setMaxResults(2);//查几条List<User> list=query.list();三、Criteria:面向对象的无语句的查询
1、查询所有记录
Criteria cri=session.createCriteria(User.class); List<User> list=cri.list();2、查询一条记录
Criteria cri=session.createCriteria(User.class);cri.add(Restrictions.eq("id", 3));//where id=3User u=(User) cri.uniqueResult();3、别的条件的查询
Criteria cri=session.createCriteria(User.class);cri.add(Restrictions.like("name", "%l%"));//模糊查询 //cri.add(Restrictions.gt("id", 2));//id >2 //cri.add(Restrictions.lt("id", 2));//id <2 //cri.add(Restrictions.ge("id", 2));//id >=2 //cri.add(Restrictions.le("id", 2));//id <=2List<User> list=cri.list();四、原生的sql查询
1、查询出的每条记录被存储在一个数组中
SQLQuery query=session.createSQLQuery("select * from user"); List<Object[]> list=query.list(); for(Object[] obj:list){System.out.println(Arrays.toString(obj)); }2、查询出的每条记录被封装成User对象
SQLQuery query=session.createSQLQuery("select * from user"); query.addEntity(User.class); List<User> list=query.list();
0 0
- hibernate中的与数据库操作的那些事儿
- VC----MFC文件操作的那些事儿
- 2016年,分布式数据库的那些事儿
- angular中的作用域的那些事儿
- Hibernate中的数据库操作
- .NET的那些事儿(4)——NHibernate中的单表操作
- 与内存有关的那些事儿
- UIWebView与JavaScript的那些事儿
- Oracle与DB2的那些事儿
- Javascript与iframe的那些事儿
- UIWebView与JavaScript的那些事儿
- UIWebView与JavaScript的那些事儿
- UIWebView与JavaScript的那些事儿
- UIWebView与JavaScript的那些事儿
- 【与硬盘分区有关的那些事儿】
- XSS与字符编码的那些事儿
- 我与京东的那些事儿
- UIWebView与JavaScript的那些事儿
- 【hdu 2093】 考试排名
- 94. Binary Tree Inorder Traversal
- MFC中的Create();函数
- Storm 1.0.x 运行环境的安装
- MFC CString转化为char*
- hibernate中的与数据库操作的那些事儿
- 第9周 项目2-对称矩阵的加法和乘法
- Solr-----4、Solr添加IK中文分词器
- 将[1,n^2]区间内n^2个数字分别填充到n*n的矩阵里,要求任意两个相邻的数字的和,它们的最大值最小是多少?
- Android开发——Intent的介绍
- 面试记录2-web前端开发
- 格式化输出函数
- 28. Implement strStr() (返回子串在字符串中第一次出现的位置)
- 对于单片机C里面结构体的认识