Hibernate一些sql

来源:互联网 发布:虚拟号码发短信软件 编辑:程序博客网 时间:2024/06/01 14:30
查询:
String hql = "from Users";   
Query query = session.createQuery(hql);    
List<Users> users = query.list();   
        
String hql = "select name,passwd from Users";   
Query query = session.createQuery(hql);   
List<Users[]> list = query.list();  


String hql = "from Users where name=:username and passwd=:password";   
Query query = session.createQuery(hql)
        .query.setString("username", "小明")
        .query.setString("password", "123")
        .uniqueResult();    
List<List> list=query .list();

分页查询:
Queryquery = session.createQuery("from User");
        query.setFirstResult(0); --(page-1)*maxsize            从第几个查起.    注:hql里面不能有*  
        query.setMaxResults(2);     --maxsize                最大条数为两个                            
ListuserList = query.list();



修改:
String hql = "update tablename set id=:id and name=:name";
Query query = session.createQuery(hql);
        query.setInteger("id",1);
        query.setString("name",小明);
query.executeUpdate();



删除:
String hql="delete Person as p where p.id=?";
Query query=session.createQuery(hql);
        query.setInteger(0,id);
query.executeUpdate();
或者:
session.delete(session.get(entityClass, id));

    
增加:
save(Object);


sql:查询
public void test() {  
    Session session = HibernateUtils.openSession();  
    String sql = "select * from student where id = ?";  
    List<Student> stus = session.createSQLQuery(sql)//  
            .addEntity(Student.class)//  
            .setParameter(0, 1)//  
            .list();  
    for (Student stu : stus) {  
        System.out.println(stu);  
    }  
}


//三种hibernate查询语句
super.getSession().createSQLQuery("select * from person").addEntity(person).list();
    Query query = super.getSession().createSQLQuery(sql);
                List<Object> list = query.list();
                for(Object obj : list){
                    Object[] objarr = (Object[])obj;
                    id.setVoucherno(objarr[0] == null?"":String.valueOf(objarr[0]));
                    id.setSuffixno(objarr[1] == null?0L:Long.parseLong(String.valueOf(objarr[1])));
                    ecsubvoucher.setRemark(objarr[2] == null?"":String.valueOf(objarr[2]));
            
super.getSession().createCriteria(Person.class).add(Example.create(p)).list();
        
super.getSession().createQuery(hql)







多表查询:
 from User u left join  Teacher t where u_tid=t.id;
 from User u join fetch Teacher t where u_tid=t.id;懒加载

动态的语句:
        dynamic_insert="true" --动态生成sql语句,对象属性有什么就保存什么,控制台就打印什么。没有给set值的属性,不打印
        dynamic_update="true" --对于对象的属性,改什么就update什么,没改的不变,还是原来的。(不加这一段的话,如果没set其他属性,就在数据库给null值)
        

@Repository
public abstract class GenericDaoImpl<E extends Serializable,PK extends Serializable> implements GenericDao<E, PK> {
    
    @Autowired
    protected SessionFactory sessionFactory;
    protected Class<E> entityClass;
    
    public GenericDaoImpl() {
        entityClass=(Class<E>) ((ParameterizedType)(this.getClass()                                                                                .getGenericSuperclass()))                                                                        .getActualTypeArguments()[0];
    }

    public void insert(E e) {
        Session session=sessionFactory.getCurrentSession();
        session.save(e);
    }

    public void deleteById(PK id) {
        Session session=sessionFactory.getCurrentSession();        
        session.delete(session.get(entityClass, id));
    }

    public void delete(E e) {
        Session session=sessionFactory.getCurrentSession();        
        session.delete(e);
    }

    public void update(E e) {
        Session session=sessionFactory.getCurrentSession();        
        session.update(e);
    }

    public E selectById(PK id) {
        Session session=sessionFactory.getCurrentSession();        
        return (E) session.get(entityClass, id);
    }

    public List<E> selectAll() {
        Session session=sessionFactory.getCurrentSession();
        return session.createCriteria(entityClass)
                      .list();
    }
}

原创粉丝点击