1.jsp 里面的 表格 中的 一列的 合计值
定义:<c:set var="sum" value="0"/>
<c:foreach>
${dum}
赋值:<c:set var="sum" value="${sum+=dum}"/>
</c:foreach>
输出:${sum}
》》》》》》》》》》》》》》》》》》》》》》》》
2.hql 的查询 小结
Person p =(Person)session.load(Person.class, new Integer(1)); 或者 是 get
2.1链接的 外键的 使用
public class stu(){
外键 private Sbclass sl;
}
查询是: from stu e where e.sl.id=5
2.3 使用自己传入的参数
String name="张飞";
//使用绑定参数
String hql="from Student where stuname = :name";
Query query=session.createQuery(hql);
query.setString("name", name);
2.4 唯一的值
String hql="select count(1) from Student";
Query query=session.createQuery(hql);
//获取总行数
int rowCount = ((Long)query.uniqueResult()).intValue();
2.5分页的 hql
<span style="font-size:18px;">//分页查询
@Test
public void Test9Hql(){
//使用hql语句实现分页查询
String hql="select count(1) from Student";
Query query=session.createQuery(hql);
//获取总行数
int rowCount = ((Long)query.uniqueResult()).intValue();
int pageSize=2;//设置每页显示行数
int currentPageNo=2;//设置当前显示第几页
//获取总页数
int pageCount=rowCount%pageSize==0?rowCount/pageSize:rowCount/pageSize+1;
hql="from Student order by id";
query=session.createQuery(hql);
//设置本页开始位置
query.setFirstResult((currentPageNo-1)*pageSize);
//设置本页显示行数
query.setMaxResults(pageSize);
//list在查询是 是一次性的将满足条件的信息查询出来
List<Student> list = query.list();
for(Student stu : list){
System.out.println("编号:"+stu.getId()+",姓名:"+stu.getStuname());
}
}</span>
2.6 :使用的 排序
String hql="from Dept order by dno asc";
内连接:String hql="from Dept d join d.emps";
2.7 如果使用 Iterator 的 可以 缓冲
String hql="from Dept";
Query query=session.createQuery(hql);
Iterator<Dept> it = query.iterate();
while(it.hasNext()){
Dept d=it.next();
System.out.println("部门名称:"+d.getDname());
}
4. list 的二级缓冲 (List<Dept>)query2.setCacheable(true).list();(导入一个 xml文件 修改 cfg 的配置)
5.String hql="select count(*) from UserInfo where uname = ? and upwd=?";
Query query = session.createQuery(hql);
query.setString(0, uname);
query.setString(1, upwd);
6. 注入
String uname="zhangsan";
String upwd="123456";
//hql语句的参数采用参数名称绑定的形式
String hql="from UserInfo where uname = :uname and upwd=:upwd";
Query query = session.createQuery(hql);
query.setString("uname", uname);
query.setString("upwd", upwd);
》》》》》》》》》》》》》》》》》》》》》》》》
3。 hibernate的 session中:
session.save(student) session.delete(student)
session.update(student) session.load get(student.class ,id)
》》》》》》》》》》》》》》》》》》》》》》》》
4. 使用原声的 sql 语句 在hibernate中
使用SQLQuery
List cats = sess.createSQLQuery( " select * from cats " ).addEntity(Cat. class ).list();
需要 给其 配置 映射的类
5.使用 外键 从父亲把儿子 查出来
<span style="font-size:18px;"> @Test
public void LoadDeptEmp(){
String hql="from Dept";
Query query=session.createQuery(hql);
List<Dept> list = query.list();
for(Dept dept : list){
System.out.println("部门编号:"+ dept.getDno());
System.out.println("部门名称:"+ dept.getDname());
//此处我们要显示部门下的员工信息
//我们会发现 每显示一条部门以后会进行一次员工信息的查询(下面会输出对应的sql语句)
Set<Employee> emps=dept.getEmps();
Iterator<Employee> itor=emps.iterator();
while(itor.hasNext()){
Employee emp=itor.next();
System.out.println("员工编号:"+emp.getEmpno());
System.out.println("员工姓名:"+emp.getEmpname());
}
}
}</span>
》》》》》》》》》》》》》》》》》
6. mysql 的 建表 过程
create table sbemp( 自增的主键
id int primary KEY auto_increment,
empId varchar(10),
ename varchar(10),
esex varchar(2),
post varchar(10),
basepay NUMERIC(6,2),
deptId int ,
pym varchar(10),
这是 日期 有 默认值
xiuxiDtm timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
FOREIGN key(deptId) REFERENCES sbdept(id)
);
》》》》》》》》》》》》》》》》》》》》》》》》》》