博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
延迟加载、分页显示等功能的增加
阅读量:4647 次
发布时间:2019-06-09

本文共 5523 字,大约阅读时间需要 18 分钟。

package com.hanqi.dao;import static org.junit.Assert.*;import java.util.*;import org.hibernate.service.*;import org.hibernate.cfg.Configuration;import org.hibernate.*;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.junit.*;public class TestNews {        //构建会话工厂对象      较为消耗资源        SessionFactory sf = null;                    //构建会话对象        Session se = null;                    //开启事务        Transaction tr = null;        @Before    public void init()    {        System.out.println("这是测试之前的代码");                //第一步:构建一个配置类        Configuration conf = new Configuration().configure();                //第二步:构建注册器类        ServiceRegistry serv = new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();                //构建会话工厂对象      较为消耗资源         sf = conf.buildSessionFactory(serv);                //构建会话对象         se = sf.openSession();                //开启事务         tr = se.beginTransaction();    }            //HQL查询        @Test    public void testquery()    {        // 2 - 1        查询//        String hql = "select n.id,n.title from News n order by n.id desc";    //News 是一个类                         // 2 - 2        查询//        String hql = "select count(n.id),min(n.id),max(n.id) from News n";                // 2 - 3        group by 分组//        String hql = "select n.title,count(n.title) from News n group by n.title";                // 2 - 4        group by         having 分组//        String hql = "select n.title,count(n.title) from News n group by n.title having count(n.title) > 4";        // 2 - N    输出方式/*        List
l = query.list(); for(Object[] news : l) { for(Object o : news) { System.out.println( o + " "); } System.out.println(); }*/ } //HQL查询 @Test public void testQuery() { // 1 - 1 //String hql = "from News n where n.id = :ID and n.title like :Title"; // 1 - 2 //String hql = "from News n where n.id = ? and n.title like ?"; //降序排序 // 1 - 3// String hql = "from News n order by n.id desc"; /* // 1 - 1 List
l = query.setInteger("ID", 23) //参数名只要能够与语句中的参数名匹配起来就可以 .setString("Title", "%标题%") .list();*/ /* // 1 - 2 List
l = query.setInteger(0, 23) .setString(1, "%标题%") .list();*/ // 1 - 3// List
l = query.List(); //遍历输出查询 // 1 - N 均使用下列方式遍历/* List
l = query.list(); for(News news : l) { System.out.println(news); }*/ } //HQL分页查询 @Test public void testQueryPage() { // 1 - 4 String hql = "from News n"; //生成Query对象 Query query = se.createQuery(hql); //分页 //页数 int pagenum = 3; //每页最大行数 int rows = 5; List
l = query.setFirstResult((pagenum - 1) * rows) //起始行的编号 .setMaxResults(rows) //每页显示最大行数 .list(); System.out.println("结果集行数 = " + l.size() ); for(News news : l) { System.out.println(news); } } //一级缓存 @Test public void testYJHC() { News news1 = (News)se.get(News.class, 23); System.out.println(news1); News news2 = (News)se.get(News.class, 23); System.out.println(news2); } @Test public void test() { System.out.println("这是测试"); //执行操作 //数据查询 //查询,转成,持久化状态 News news2 = (News)se.get(News.class, 22); // News 对象名 = (News(强制转化为的类型))会话对象.get.(实体类类型,主键值) System.out.println(news2); } @Test public void testGet() { //执行操作 //执行数据插入 News news = new News();//转成,瞬时状态(临时状态) news.setTitle("标题"); news.setContent("内容"); news.setCreatedate(new Date()); news.setAuthor("作者"); //保存,瞬时状态转成持久化状态 se.save(news); //将实体类传进去 news.setTitle("新标题栏3"); //将对应数据进行修改 //刷新 se.flush(); //主动执行一次刷新 //提交事务 tr.commit(); //关闭会话 se.close(); //构建会话对象 se = sf.openSession(); //开始事务 tr = se.beginTransaction(); // news.setTitle("改变的标题"); // news.setId(1); //托管状态 se.saveOrUpdate(news); //会自动判断插入与修改 // se.update(news); //将托管状态转为持久化状态 news.setContent("新的内容1"); //删除 News news3 = (News)se.get(News.class, 1); //(News.class, 要删除的id号) se.delete(news3); } //延迟加载 @Test public void testLoad() { News news4 = (News)se.load(News.class, 1); System.out.println("id = " + news4.getId()); System.out.println("title = " + news4.getTitle()); } @Test public void testCascade() { Factory f = (Factory)se.get(Factory.class, 1);//获取厂家id是1的 se.delete(f); //执行删除f操作 } @Test public void testMantOneQuery() { // product p = (product)se.get(product.class, 3); Factory f = (Factory)se.get(Factory.class, 1); System.out.println("产品名称 = " + p.getName()); System.out.println("产品名称 = " + p.getFactory().getName()); System.out.println("产品数量 = " + f.getProducts().size()); } @Test public void testManyToOne() { //数据操作 Factory f = new Factory("厂家名称"); //// Factory f = (Factory)se.get(Factory.class, 1); product p = new product("产品名称1",100,f); product p2 = new product("产品名称2",120,f); //先生成的放置在前方 se.save(f); se.save(p); se.save(p2); } @After public void destroy() { System.out.println("测试之后执行"); //提交事务 tr.commit(); //关闭会话 se.close(); //关闭会话工厂 sf.close(); }}

 

转载于:https://www.cnblogs.com/name-hanlin/p/5137732.html

你可能感兴趣的文章
参考汇总
查看>>
javascript学习笔记(二)
查看>>
spring-boot快速搭建解析
查看>>
Sphinx 匹配模式
查看>>
React父组件调用子组件的方法
查看>>
利用EEPROM实现arduino的断电存储
查看>>
micropython TPYBoard v201 简易的web服务器的实现过程
查看>>
前端代码异常日志收集与监控
查看>>
BZOJ.4566.[HAOI2016]找相同字符(后缀自动机)
查看>>
STL源码剖析(set/map)
查看>>
隐式意图&显示意图
查看>>
css 3D堆叠图片卡
查看>>
hdu 4068 福州赛区网络赛H 排列 ***
查看>>
spring mvc中的@PathVariable
查看>>
cocos2dx3.0 removeFromParent和removeAllChildren含义
查看>>
CentOS7 下调教mysql记实 之三
查看>>
谈谈微服务
查看>>
phpstorm更改sql文件匹配类型
查看>>
UUID、GUID、SID、SUSID
查看>>
UCenter重置创始人和用户密码
查看>>