java项目的公共接口GenericDao与GenericService

GenericDao类

package com.yufei.core.generic;

import java.util.List;

import org.apache.ibatis.annotations.Select;

/**
 * 所有自定义Dao的顶级接口, 封装常用的增删查改操作,
 * 可以通过Mybatis Generator Maven 插件自动生成Dao,
 * 也可以手动编码,然后继承GenericDao 即可.
 * 

* Model : 代表数据库中的表 映射的Java对象类型 * PK :代表对象的主键类型 * * @author StarZou * @since 2014年6月9日 下午6:14:06 */ public interface GenericDao { /** * 插入对象 * * @param model 对象 */ int insertSelective(Model model); /** * 更新对象 * * @param model 对象 */ int updateByPrimaryKeySelective(Model model); /** * 更新对象 * * @param model 对象 */ int updateByPrimaryKey(Model model); /** * 通过主键, 删除对象 * * @param id 主键 */ int deleteByPrimaryKey(PK id); /** * 通过主键, 查询对象 * * @param id 主键 * @return */ Model selectByPrimaryKey(PK id); /** * 查询所有记录 * @return */ List selectByExample(); /** * 获取新增主键值 * @return */ @Select("SELECT @@IDENTITY") long getLastInsertID(); }

GenericService

package com.yufei.core.generic;

import java.util.List;

/**
 * 所有自定义Service的顶级接口,封装常用的增删查改操作
 * 

* Model : 代表数据库中的表 映射的Java对象类型 * PK :代表对象的主键类型 * * @author StarZou * @since 2014年6月9日 下午6:14:06 */ public interface GenericService { /** * 插入对象 * * @param model 对象 */ int insertSelective(Model model); /** * 更新对象 * * @param model 对象 */ int updateSelective(Model model); /** * 通过主键, 删除对象 * * @param id 主键 */ int delete(PK id); /** * 通过主键, 查询对象 * * @param id 主键 * @return model 对象 */ Model selectById(PK id); /** * 查询单个对象 * * @return 对象 */ Model selectOne(); /** * 查询所有对象 * * @return 对象集合 */ List selectAllList(); /** * 获取新增记录主键(Mysql) * @return */ long getLastInsertID(); }

GenericServiceImpl

package com.yufei.core.generic;

import java.util.List;

import com.yufei.core.util.DateUtil;
import com.yufei.core.util.PageData;
import com.yufei.core.util.ReflectUtil;
import com.yufei.erp.basis.model.my.MySysDeptPerson;

/**
 * GenericService的实现类, 其他的自定义 ServiceImpl, 继承自它,可以获得常用的增删查改操作,
 * 未实现的方法有 子类各自实现
 * 

* Model : 代表数据库中的表 映射的Java对象类型 * PK :代表对象的主键类型 * * @author StarZou * @since 2014年6月9日 下午6:14:06 */ public abstract class GenericServiceImpl implements GenericService { /** * 定义成抽象方法,由子类实现,完成dao的注入 * * @return GenericDao实现类 */ public abstract GenericDao getDao(); /** * 插入对象 * * @param model 对象 */ public int insertSelective(Model model) { return getDao().insertSelective(model); } /** * 更新对象 * * @param model 对象 */ public int updateSelective(Model model) { return getDao().updateByPrimaryKeySelective(model); } /** * 更新对象 * * @param model 对象 */ public int update(Model model) { return getDao().updateByPrimaryKey(model); } /** * 通过主键, 删除对象 * * @param id 主键 */ public int delete(PK id) { return getDao().deleteByPrimaryKey(id); } /** * 通过主键, 查询对象 * * @param id 主键 * @return */ public Model selectById(PK id) { return getDao().selectByPrimaryKey(id); } @Override public Model selectOne() { return null; } @Override public List selectAllList() { return getDao().selectByExample(); } @Override public long getLastInsertID() { return getDao().getLastInsertID(); } /** * 【新增】记录赋值 * @param model * @param paramMap */ public void setRecordCreateInfo(Object model, PageData pd) { // 获取当前登陆用户信息 MySysDeptPerson userinfo = (MySysDeptPerson) pd.getSession("userInfo"); // 反射设定model中指定参数 ReflectUtil.setModelValue(model, "createdate", DateUtil.getTime()); //创建日期 ReflectUtil.setModelValue(model, "createuser", userinfo.getUsername()); //创建人用户名 } /** * 【修改】记录赋值 * @param model * @param paramMap */ public void setRecordModifyInfo(Object model, PageData pd) { // 获取当前登录用户信息 MySysDeptPerson userinfo = (MySysDeptPerson) pd.getSession("userInfo"); // 反射设定model中指定参数 ReflectUtil.setModelValue(model, "modifyuser", userinfo.getUsername()); //修改人用户名 ReflectUtil.setModelValue(model, "modifydate", DateUtil.getTime()); //修改日期 } }

 

使用实例:

@Service
public class RoleServiceImpl extends GenericServiceImpl implements RoleService

public interface SysRoleMapper extends GenericDao

你可能感兴趣的:(工作总结)