一.HQL语句
使用HQL查询所有记录Session session = HibernateUtil.getOpensession();
Transaction transaction = session.beginTransaction();
String hql = "from com.lanou3g.User";
Query<User> query = session.createQuery(hql);
//预见结果集
//多个就用list处理
//单个就用 uniqueResult
//注意:如果返回的是多个结果,使用uniqueResult会报错
List<User> list = query.list();
transaction.commit();
session.close();
使用问号占位符
//使用HQL查询所有记录
Session session = HibernateUtil.getOpensession();
Transaction transaction = session.beginTransaction();
//使用问号占位符替代
String hql = "from com.lanou3g.User where id = ?";
Query<User> query = session.createQuery(hql);
//从0开始
query.setParameter(0, 2);
User user = query.uniqueResult();
transaction.commit();
session.close();
使用冒号占位符
//:后面是占位符的名字
//注意:冒号后面不要加空格
//替换时 直接使用名字即可
String hql = "from com.lanou3g.User where username = :username and password = :password";
Query<User> query = session.createQuery(hql);
query.setParameter("username", "wanglong");
query.setParameter("password", "123");
User user = query.uniqueResult();
使用hql分页查询
String hql = "from User";
Query<User> query = session.createQuery(hql, User.class);
query.setFirstResult(0);
query.setMaxResults(2);
List<User> list = query.list();
如何配置多表xml文件
1.一对多name表示实体类对象属性名
column:两张表联系的外键
注意:外键名要一致 否则会多建一个外键
class 与哪个类进行一对多
<set name="" cascade="save-update" inverse="true">
<key column=""></key>
<one-to-many class=""/>
/set>
2.多对一
name表示多对一对象的属性名
class表示的是多对一对象的类
column表示的是外键
注意:在property中配置不要重复配置外键
<many-to-one name="" class="" column=""></many-to-one>
3.多对多
name 容器名字
table 中间表的名字
column 中间表引用的id
class 对应的那个表的类名
column 对应那个表的外键
<set name="users" table="sys_user_role">
<key column="role_id"></key>
<many-to-many class="User" column="user_id"></many-to-many>
</set>