JFinal

登录 注册

jfinal集成 Hibernate

jfinal-hibernate

项目介绍

jfinal集成Hibernate。更爽的操作数据库。

软件架构

jfinal+hibernate4+mysql


  1. 已经实现BaseDao和BaseService的一些常用方法。

  2. 事物只需要 @Before(TransactionalInterceptor.class)即可


在 config里面初始化 hibernate配置 HibernateUtil.initSessionFactory();

然后添加 hibernate.cfg.xml 就可以使用了。


BaseDao代码:

/**
	 * 保存
	 * 
	 * @param po
	 * @return
	 */
	public Serializable save(T po) {
		return getSession().save(po);
	}

	/**
	 *根据主键获取实体
	 */
	@Override
	@SuppressWarnings("unchecked")
	public T get(Serializable id) {
		if (id != null && !"".equals(id.toString())) {
			Object entity = getSession().get(poClass, id);
			if (entity instanceof HibernateProxy) {
				entity = ((HibernateProxy) entity).getHibernateLazyInitializer().getImplementation();
			}
			return (T) entity;
		} else {
			return null;
		}
	}

	/**
	 * 查询集合
	 */
	@Override
	@SuppressWarnings("unchecked")
	public List<T> findList(String hql, Object... values) {
		Query query = getSession().createQuery(hql);
		for (int i = 0; i < values.length; i++) {
			query.setParameter(i, values[i]);
		}
		return query.list();
	}

	/**
	 * 更新
	 */
	@Override
	public void update(T po) {
		getSession().update(po);
	}

	/**
	 * 根据HQL删除
	 */
	@Override
	public int delete(String hqlSQL, Object... values) {
		return executeHQL(hqlSQL, values);
	}

	/**
	 * 根据主键进行删除
	 */
	@Override
	public void delete(Serializable id) {
		delete(get(id));
	}

	/**
	 * 根据实体进行删除
	 */
	@Override
	public void delete(T vo) {
		getSession().delete(vo);
	}

	/**
	 * 根据实体进行更新
	 */
	@Override
	public int update(String hqlSQL, Object... values) {
		return executeHQL(hqlSQL, values);
	}

	/**
	 * 根据HQL查询实体
	 */
	@Override
	@SuppressWarnings("unchecked")
	public T findByHql(String hql, Object... values) {
		Query query = createQuery(hql, values);
		query.setFirstResult(0);
		query.setMaxResults(1);
		return (T) query.uniqueResult();
	}




示例代码:Dao

public class AdminDaoImpl extends BaseDaoImpl<Admin>implements IAdminDao {

	@Override
	public List<Admin> getList() {
		return findList("from Admin where 1=1 ", new Object[0]);
	}

	@Override
	public void add() {
		Admin admin = new Admin();
		admin.setUserName("add");
		admin.setPassword("add");
		admin.setRole(1);
		admin.setCreated(new Date());
		admin.setUpdated(new Date());
		save(admin);

	}

	@Override
	public void add1() {
		Admin admin = new Admin();
		admin.setUserName("add11111111111111111111111111111111111111111111111");
		admin.setPassword("add1");
		admin.setRole(1);
		admin.setCreated(new Date());
		admin.setUpdated(new Date());
		save(admin);
	}


Service:

public class AdminServiceImpl extends BaseServiceImpl<Admin>implements IAdminService {
	private static final IAdminDao adminDao = Duang.duang(AdminDaoImpl.class);

	@Override
	public BaseDao<Admin> getDao() {
		return adminDao;
	}

	@Override
	public List<Admin> getList() {
		return adminDao.getList();
	}

	@Before(TransactionalInterceptor.class)
	@Override
	public void add() {
		adminDao.add();
		adminDao.add1();

	}

}


Controller:

@com.jfinal.annotation.Controller
@RequestMapping(value = "/test")
public class TestController extends Controller {

	private static final IAdminService adminService = Duang.duang(AdminServiceImpl.class);
	private static final IUserService userService = Duang.duang(UserServiceImpl.class);

	public void getList() {
		renderJson(adminService.getList());
	}

	public void add() {
		adminService.add();
		renderText("ok");
	}

	public void getUserAll() {
		renderJson(userService.getUserAll());
	}

}

项目地址:  https://gitee.com/caoxusheng/jfinal-hibernate



评论