<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name属性指定类名(全限定名) table指明表名,不指明table数据默认的表名和实体名一致 -->
<class name="model.Account" table="acc_tab">
<!-- type指明当前字段的类型 name对应实体中的属性名 -->
<id type="integer" name="id">
<!-- 提供ID自增的策略 native会根据数据库自行判断 -->
<generator class="native"/>
</id>
<property name="name" type="string"></property>
<property name="age" type="integer"></property>
<property name="score" type="double"></property>
<property name="birthday" type="date"></property>
</class>
<query name="queryName">
<![CDATA[FROM Account]]>
</query>
</hibernate-mapping>
package test;
import java.util.List;
import model.Account;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.Test;
import util.HibernateUtils;
public class AccountTest3 {
@Test
public void createTable(){
//加载hibernate.cfg.xml文件并解析
Configuration cfg=new Configuration().configure();
SchemaExport se=new SchemaExport(cfg);
//对生成的DDL语句进行格式化
se.setFormat(true);
se.setDelimiter(" ");
se.setOutputFile("account.sql");
se.create(true, true);
}
@Test
public void findAll(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="from Account";
Query query=session.createQuery(sql);
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void findUnique(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="from Account";
Query query=session.createQuery(sql);
Account acc=(Account)query.setMaxResults(1).uniqueResult();
System.out.println(acc);
tr.commit();
HibernateUtils.close(session);
}
/**
* 投影查询
*/
@Test
public void find2(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="select name,age from Account";
Query query=session.createQuery(sql);
List list=query.list();
for(int i=0;i<list.size();i++){
Object[]obj=(Object[])list.get(i);
System.out.println(obj[0]+"--->"+obj[1]);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find3(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="select new Account(name,age) from Account";
Query query=session.createQuery(sql);
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find4(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="select upper(name) from Account";
Query query=session.createQuery(sql);
List list=query.list();
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find5(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="select upper(name),current_date() from Account";
Query query=session.createQuery(sql);
List list=query.list();
for(int i=0;i<list.size();i++){
Object[]obj=(Object[])list.get(i);
System.out.println(obj[0]+"--->"+obj[1]);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find6(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="from Account where score>:mins";
Query query=session.createQuery(sql);
query.setDouble("mins", 90);
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find7(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="from Account where score>?";
Query query=session.createQuery(sql);
query.setDouble(0, 90);
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void find8(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="from Account";
Query query=session.createQuery(sql).setFirstResult(3).setMaxResults(3);
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void delete(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="delete from Account where id=7";
Query query=session.createQuery(sql);
int i=query.executeUpdate();
if(i>0){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}
tr.commit();
HibernateUtils.close(session);
}
@Test
public void update(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
String sql="update Account set age=19 where id=6";
Query query=session.createQuery(sql);
int i=query.executeUpdate();
if(i>0){
System.out.println("修改成功");
}else{
System.out.println("修改失败");
}
tr.commit();
HibernateUtils.close(session);
}
/**
* 命名查询
*/
@Test
public void find9(){
Session session=HibernateUtils.getSession();
Transaction tr=session.beginTransaction();
Query query=session.getNamedQuery("queryName");
List<Account> list=(List<Account>)query.list();
for(Account acc:list){
System.out.println(acc);
}
tr.commit();
HibernateUtils.close(session);
}
}