java ao dao_DAO层重构

通用DAO层接口:ICommonDao:

package com.lrq.dao.base;

import java.io.Serializable;

import java.util.Collection;

public interface ICommonDao {

public void persist(T t);

public void delete(Serializable id);

public void update(T t);

public T get(Class clazz,Serializable id);

public Collection listAll();

}

通用Dao实现CommonDaoImpl:

package com.lrq.dao.base.impl;

import java.io.Serializable;

import java.lang.reflect.ParameterizedType;

import java.util.Collection;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.orm.hibernate3.HibernateTemplate;

import com.lrq.dao.base.ICommonDao;

public abstract class CommonDaoImpl implements ICommonDao {

private Class clazz;

@Autowired

public HibernateTemplate hibernateTemplate;

public CommonDaoImpl() {

ParameterizedType type = (ParameterizedType) this.getClass()

.getGenericSuperclass();

clazz = (Class) type.getActualTypeArguments()[0];

}

public void persist(T t) {

if (t != null)

hibernateTemplate.persist(t);

}

@SuppressWarnings("unchecked")

public void delete(Serializable id) {

if (id != null) {

Object entity = hibernateTemplate.get(clazz, id);

if (entity != null)

hibernateTemplate.delete(entity);

}

}

public void update(T t) {

if (t != null) {

hibernateTemplate.update(t);

}

}

@SuppressWarnings("unchecked")

public T get(Class clazz, Serializable id) {

return (T) (id == null ? null : hibernateTemplate.get(clazz, id));

}

@SuppressWarnings("unchecked")

public Collection listAll() {

return hibernateTemplate.find("from " + clazz.getSimpleName());

}

}

具体的某个实体DAO:

package com.lrq.dao;

import java.util.Collection;

import com.lrq.dao.base.ICommonDao;

import com.lrq.domain.Privilege;

public interface IPrivilegeDao extends ICommonDao {

public Privilege getPrivilegeByName(String nodeName);

public Collection getPrivilegesByIds(String ids);

}

对应的Dao实现:

package com.lrq.dao.impl;

import java.util.Collection;

import java.util.List;

import org.springframework.stereotype.Repository;

import com.lrq.dao.IPrivilegeDao;

import com.lrq.dao.base.impl.CommonDaoImpl;

import com.lrq.domain.Privilege;

import com.lrq.util.StringUtils;

import freemarker.template.utility.StringUtil;

@Repository

public class PrivilegeDaoImpl extends CommonDaoImpl implements

IPrivilegeDao {

@SuppressWarnings("unchecked")

public Privilege getPrivilegeByName(String nodeName) {

// 如果 入的参数都为null,我认为没必要和数据库进行交互,直接返回null;

if (StringUtils.isEmpty(nodeName))

return null;

List list = hibernateTemplate.find(

"from Privilege where name=?", nodeName);

return list != null && list.size() > 0 ? list.get(0) : null;

}

@SuppressWarnings("unchecked")

public Collection getPrivilegesByIds(String ids) {

if (!StringUtils.isEmpty(ids)) {

StringBuffer sb = new StringBuffer();

sb.append("from Privilege where id in(");

sb.append(ids);

sb.append(" )");

System.out.println(sb.toString());

List list = this.hibernateTemplate.find(sb.toString());

return list;

}

return null;

}

}

注意:通用的Dao实现是一个抽象类,而且必须这么做;因为他不能有实例对象

0818b9ca8b590ca3270a3433284dd417.png 转发至微博

0818b9ca8b590ca3270a3433284dd417.png 转发至微博

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
td_s32 sample_audio_ai_hdmi_ao(td_void) { td_s32 ret; td_u32 ai_chn_cnt; td_u32 ao_chn_cnt; ot_audio_dev ai_dev; ot_audio_dev ao_dev = SAMPLE_AUDIO_INNER_HDMI_AO_DEV; ot_aio_attr aio_attr = {0}; ot_aio_attr hdmi_ao_attr = {0}; sample_comm_ai_vqe_param ai_vqe_param = {0}; sample_audio_ai_hdmi_ao_init_param(&aio_attr, &ai_dev, &hdmi_ao_attr); /* enable AI channel */ ai_chn_cnt = aio_attr.chn_cnt; aio_attr.work_mode = OT_AIO_MODE_I2S_MASTER; sample_audio_set_ai_vqe_param(&ai_vqe_param, OT_AUDIO_SAMPLE_RATE_BUTT, TD_FALSE, TD_NULL, 0); ret = sample_comm_audio_start_ai(ai_dev, ai_chn_cnt, &aio_attr, &ai_vqe_param, -1); if (ret != TD_SUCCESS) { sample_dbg(ret); goto hdmi_err2; } /* enable AO channel */ ao_chn_cnt = hdmi_ao_attr.chn_cnt; ret = sample_comm_audio_start_ao(ao_dev, ao_chn_cnt, &hdmi_ao_attr, g_in_sample_rate, g_aio_resample); if (ret != TD_SUCCESS) { sample_dbg(ret); goto hdmi_err1; } /* config audio codec */ ret =sample_es8388_cfg_audio(aio_attr.work_mode, aio_attr.sample_rate, aio_attr.chn_cnt); if (ret != TD_SUCCESS) { sample_dbg(ret); goto hdmi_err0; } /* AI to AO channel */ ret = sample_audio_ao_bind_ai_multi_chn(ai_dev, ai_chn_cnt, ao_dev); if (ret != TD_SUCCESS) { goto hdmi_err0; } printf("\nplease press twice ENTER to exit this sample\n"); smaple_audio_getchar(); smaple_audio_getchar(); sample_audio_ao_unbind_ai_multi_chn(ai_dev, ai_chn_cnt); hdmi_err0: ret = sample_comm_audio_stop_ao(ao_dev, hdmi_ao_attr.chn_cnt, TD_FALSE); if (ret != TD_SUCCESS) { sample_dbg(ret); } hdmi_err1: ret = sample_comm_audio_stop_ai(ai_dev, ai_chn_cnt, TD_FALSE, TD_FALSE); if (ret != TD_SUCCESS) { sample_dbg(ret); } hdmi_err2: return ret;详细解析
最新发布
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值