Dao实现类继承HibernateDaoSupport类,该类是抽象类,该类中有一个HibernateTemplate的属性,通过this.getHibernateTemplate()可获得一个HibernateTemplate类的对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| public class CustomerDaoImpl1 extends HibernateDaoSupport implements CustomerDao { @Override public void insert(Customer entity) { this.getHibernateTemplate().save(entity); } @Override public void delete(Customer entity) { this.getHibernateTemplate().delete(entity); } @Override public void deleteById(int id) { } @Override public List<Customer> selectAll() { List<Customer> entities = this.getHibernateTemplate().find( “from Customer”); return entities; }
@Override public Customer selectById(int id) { List<Customer> entities=this.getHibernateTemplate().find(“from Customer where id=”+id); if(entities.size()>0){ Customer entity=entities.get(0); return entity; } return null; }
@Override public void update(Customer entity) { this.getHibernateTemplate().update(entity); } }
|
一些常用的方法列子:
find(String queryString);
示例:this.getHibernateTemplate().find(“from bean.User”);
返回所有User对象
二、find(String queryString , Object value);
示例:this.getHibernateTemplate().find(“from bean.User u where u.name=?”,“test”);
或模糊查询:this.getHibernateTemplate().find(“from bean.User u where u.name like ?”,“%test%”);
返回name属性值为test的对象(模糊查询,返回name属性值包含test的对象)
三、find(String queryString, Object[] values);
示例:String hql=“from bean.User u where u.name=? and u.password=?”
this.getHibernateTemplate().find(hql, new String[]{“test”,“123”});
返回用户名为test并且密码为123的所有User对象
四、findByExample(Object exampleEntity)
示例:
1 2 3 4 5 6 7
| User u=new User();
u.setPassword(“123”);//必须 符合的条件但是这两个条件时并列的(象当于sql中的and)
u.setName(“bb”);
list=this.getHibernateTemplate().findByExample(u);
|
返回:用户名为bb密码为123的对象
五、findByExample(Object exampleEntity, intfristResults, int maxResults)
示例:
1 2 3 4 5 6 7
| User u=new User();
u.setPassword(“123”);//必须 符合的条件但是这两个条件时并列的(象当于sql中的and)
u.setName(“bb”);
list=this.getHibernateTemplate().findByExample(u,fristResults,maxResults);
|
返回:满足用户名为bb密码为123,自start起共max个User对象。(对象从0开始计数)
六、findByNamedParam(String queryString , String paramName , Object value)
使用以下语句查询:
1 2 3 4 5 6 7 8 9
| String queryString =“select count(*) from bean.User u where u.name=:myName”;
String paramName=“myName”;
String value=“xiyue”;
list=this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);
System.out.println(list.get(0));
|
返回name为xiyue的User对象的条数
七、findByNamedParam(String queryString , String[] paramName , Object[] value)
示例:
1 2 3 4 5 6 7
| String queryString =“select count(*) from bean.User u where u.name=:myName and u.password=:myPassword”;
String[] paramName= new String[]{“myName”,“myPassword”};
String[] value= new String[]{“xiyue”,“123”};
this.getHibernateTemplate().findByNamedParam(queryString, paramName, value);
|
返回用户名为xiyue密码为123的User对象