查询:
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();
}
}
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();
}
}