Hibernate持久层框架使用【三】数据查询与删除
程序员文章站
2022-04-16 22:58:01
...
Hibernate数据查询可以通过hibernate封装好的两个方法来实现
分别是get方法和load方法,这两个方法都是通过主键来查询数据
get方法:
新建个get.class类来测试一下,下面贴上代码
public class get {
public static void main(String[] args) {
// TODO Auto-generated method stub
MySessionFactory mySessionFactory = new MySessionFactory();
Session session = mySessionFactory.getSession();
User user = (User) session.get(User.class, 1);
System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());
//mySessionFactory.commit();
mySessionFactory.close();
}
}
get方法第一个参数为参数类型(查询的数据转为对应的类型)第二个参数为主键,例如这里查询主键为1的数据
Hibernate:
select
user0_.user_id as user_id1_0_0_,
user0_.age as age2_0_0_,
user0_.name as name3_0_0_
from
tb_user user0_
where
user0_.user_id=?
姓名=王安石,年龄=5,id=1
控制台成功打印出了select语句以及查询出来的信息(这里查询方法是不需要提交事务的)
load方法:
load方法与get方法不同的一点在于,它是在数据被使用时才会进行查询
例如下面这段代码
public class get {
public static void main(String[] args) {
// TODO Auto-generated method stub
MySessionFactory mySessionFactory = new MySessionFactory();
Session session = mySessionFactory.getSession();
// User user = (User) session.get(User.class, 2);
User user = (User) session.load(User.class, 3);
// System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());
// mySessionFactory.commit();
mySessionFactory.close();
}
}
运行后可以发现控制台并没有输出select语句,说明load并没有真正去查询数据
但是如果将代码中
System.out.println("姓名="+user.getName()+",年龄="+user.getAge()+",id="+user.getId());
这句的注释去掉,再运行一遍,可以看到控制台这时才使用了select语句去查询数据
Hibernate:
select
user0_.user_id as user_id1_0_0_,
user0_.age as age2_0_0_,
user0_.name as name3_0_0_
from
tb_user user0_
where
user0_.user_id=?
姓名=王安石,年龄=5,id=3
删除数据
delete方法:
新建一个delete类测试删除方法
public class delete {
public static void main(String[] args) {
// TODO Auto-generated method stub
MySessionFactory mySessionFactory = new MySessionFactory();
Session session = mySessionFactory.getSession();
User user = new User();
user.setId(2);
session.delete(user);
mySessionFactory.commit();
mySessionFactory.close();
}
}
这个删除方法非常简单,只需要给user对象设置好主键id,再传给delete方法,运行后看到控制台打印delete语句,数据表成功删除该数据
上一篇: 谷歌重返内地遏制阿里,用卖音响借道回归