您当前的位置: 首页 >  hibernate

宝哥大数据

暂无认证

  • 1浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

cms02---basic-Hibernate

宝哥大数据 发布时间:2017-10-29 09:54:37 ,浏览量:1

一、创建BaseDao的接口IBaseDao,  公共处理Dao对象, 这个对象包含了Hibernate所有的基本操作, 和Sql处理。 1.1、基本操作增删改查
    /**
     * 添加对象
     * @param t
     */
    public boolean add(T t);
    /**
     * 根据id删除对象
     * @param id
     */
    public boolean delete(int id);
    /**
     * 更新对象
     * @param t
     */
    public void update(T t);
    /**
     *添加对象
     * @param t
     * @return
     */
    public T load(T t);
1.2.1、基于hql查询参数的不分页列表对象
    /**
     * 不分页的hql查询 基于查询参数
     * select user from User where user.username=?  and password=?
     * @param hql
     * @param args  条件的参数
     * @return 一组不分页的 列表对象
     */
    public List  list(String hql, Object[] args);
    public List  list(String hql, Object arg);
    public List  list(String hql);
1.2.2基于别名和查询参数查询, 返回不分页的列表对象
/**
     * 基于别名和查询参数的混合列表对象
     * select role from Role where role.user.id in (:ids) and usernae=:username and nickname=?
     * 调用使用session.createQuery(hql).setParemeter(id, [1,2,3]).setParemeter(username, "chb");  使用Map进行传值
     * @param hql
     * @param args
     * @param alias  别名对象
     * @return
     */
    public List list(String hql, Object[] args, Map alias);
    public List list(String hql, Object arg, Map alias);
    public List list(String hql, Map alias);
1.2.3、对应的就有返回分页对象, 基于查询参数和别名
    /**
     * 分页的hql查询
     * @param hql
     * @param args  条件的参数
     * @return 一组分页的对象
     */
    public Pager  find(String hql, Object[] args);
    /** select user from User where user.username=? */
    public Pager  find(String hql, Object arg);
    public Pager  find(String hql);
    /**
     * 基于别名和查询参数的混合Pager对象
     * select role from Role where role.user.id in (:ids) and usernae=:username and nickname=?
     * 调用使用session.createQuery(hql).setParemeter(id, [1,2,3]).setParemeter(username, "chb");  使用Map进行传值

     * @param hql
     * @param args
     * @param alias  别名对象
     * @return   分页的对象
     */
    public Pager find(String hql, Object[] args, Map alias);
    public Pager find(String hql, Object arg, Map alias);
    public Pager find(String hql, Map alias);
1.3、根据Hql更新对象
    /**
     * 根据Hql更新对象。
     * @param hql
     * @param args
     */
    public void updateByHql(String hql, Object[] args);
    public void updateByHql(String hql, Object arg);
    public void updateByHql(String hql);
2、基于原生态的Sql查询 2.1、原生态的sql需要通过addEntiry(Cat.class)添加实体, 把我们需要添加的对象插入进去。
sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
如果这个实体使用的DTO, 但是这个DTO并没有放到数据库中, 即没有使用Entity所表示。可以使用ResultTransformer ,它允许没有被Entity所管理的实体类。
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

这里写图片描述

IBaseDao完整代码
package com.chb.basic.dao;

import java.util.List;
import java.util.Map;

import com.chb.basic.model.Pager;

/**
 * 公共处理Dao对象, 这个对象包含了Hibernate所有的基本操作, 和Sql处理
 * @author 12285
 */
public interface IBaseDao {
    /**
     * 添加对象
     * @param t
     */
    public boolean add(T t);
    /**
     * 根据id删除对象
     * @param id
     */
    public boolean delete(int id);
    /**
     * 更新对象
     * @param t
     */
    public boolean update(T t);
    /**
     *添加对象
     * @param t
     * @return
     */
    public T load(T t);


    /**
     * 不分页的hql查询
     * @param hql
     * @param args  条件的参数
     * @return 一组不分页的 列表对象
     */
    public List  list(String hql, Object[] args);
    /** select user from User where user.username=? */
    public List  list(String hql, Object arg);
    public List  list(String hql);
    /**
     * 基于别名和查询参数的混合列表对象
     * select role from Role where role.user.id in (:ids) and usernae=:username and nickname=?
     * 调用使用session.createQuery(hql).setParemeter(id, [1,2,3]).setParemeter(username, "chb");  使用Map进行传值
     * @param hql
     * @param args
     * @param alias  别名对象
     * @return
     */
    public List list(String hql, Object[] args, Map alias);
    public List list(String hql, Object arg, Map alias);
    public List list(String hql, Map alias);



    /**
     * 分页的hql查询
     * @param hql
     * @param args  条件的参数
     * @return 一组分页的对象
     */
    public Pager  find(String hql, Object[] args);
    /** select user from User where user.username=? */
    public Pager  find(String hql, Object arg);
    public Pager  find(String hql);
    /**
     * 基于别名和查询参数的混合Pager对象
     * select role from Role where role.user.id in (:ids) and usernae=:username and nickname=?
     * 调用使用session.createQuery(hql).setParemeter(id, [1,2,3]).setParemeter(username, "chb");  使用Map进行传值

     * @param hql
     * @param args
     * @param alias  别名对象
     * @return   分页的对象
     */
    public Pager find(String hql, Object[] args, Map alias);
    public Pager find(String hql, Object arg, Map alias);
    public Pager find(String hql, Map alias);




    /**
     * 根据Hql更新对象。
     * @param hql
     * @param args
     */
    public void updateByHql(String hql, Object[] args);
    public void updateByHql(String hql, Object arg);
    public void updateByHql(String hql);







    /**
     * 基于Sql查询
     * sess.createSQLQuery("SELECT * FROM CATS").addEntity(Cat.class);
     * sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class);
     * @param sql
      @param args           查询参数    
     * @param clz           查询的实体类Class
     * @param hasEntity   是否被Entity所管理, 即是否被Hibernate所管理
     * 如果不是:session.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS").setResultTransformer(Transformers.aliasToBean(CatDTO.class))
     * @return
     */
    public List listBySql(String sql, Object[] args, Class clz, boolean hasEntity);
    public List listBySql(String sql, Object arg, Class clz, boolean hasEntity);
    public List listBySql(String sql, Class clz, boolean hasEntity);
    public List listBySql(String sql, Object[] args, Map alias, Class clz, boolean hasEntiry);
    public List listBySql(String sql, Object arg, Map alias, Class clz, boolean hasEntiry);
    public List listBySql(String sql, Map alias, Class clz, boolean hasEntiry);

    /**
     * 返回分页对象。
     * @param sql
     * @param args
     * @param clz
     * @param hasEntity
     * @return
     */
    public List finBySql(String sql, Object[] args, Class clz, boolean hasEntity);
    public List findBySql(String sql, Object arg, Class clz, boolean hasEntity);
    public List findBySql(String sql, Class clz, boolean hasEntity);
    public List findBySql(String sql, Object[] args, Map alias, Class clz, boolean hasEntiry);
    public List findBySql(String sql, Object arg, Map alias, Class clz, boolean hasEntiry);
    public List findBySql(String sql, Map alias, Class clz, boolean hasEntiry);

















}
关注
打赏
1587549273
查看更多评论
立即登录/注册

微信扫码登录

0.0429s