on.commit();
}
/**
* 执行sql查询操作
* @param callback 回调函数
* @return 回调函数的返回值
* @param <R> 回调函数的返回值
*/
public static <R> R query(Function<Session, R> callback) {
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
try {
R r = callback.apply(session);
transaction.commit();
return r;
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
return null;
}
}
}
Dao层
package org.example.dao;
import org.example.entity.User;
import org.example.util.SessionFactoryUtil;
import java.util.List;
public class UserDao {
public void save(User user) {
SessionFactoryUtil.execute(session -> session.persist(user));
}
public void update(User user) {
SessionFactoryUtil.execute(session -> session.merge(user));
}
public void delete(User user) {
SessionFactoryUtil.execute(session -> session.remove(user));
}
public User findById(Long id) {
return SessionFactoryUtil.query(session -> session.get(User.class, id));
}
public List<User> findAll() {
return SessionFactoryUtil.query(session -> session.createQuery("from User", User.class).list());
}
public List<User> findByName(String likeContent) {
return SessionFactoryUtil.query(session ->
// 创建query,使用HQL(Hibernate Query Language)查询
// 1.不用select *
// 2.参数用?1 ?2 ?3这样的占位符
// 3.参数的序号从1开始
session.createQuery("from User as u where u.name like ?1", User.class)
// 设置参数
.setParameter(1, "%" + likeContent + "%")
// 获取list
.list());
}
}