JAVA_WEB项目之Service层抽取成BaseService和BaseServiceImpl
来源:互联网 发布:数据分组分析法案例 编辑:程序博客网 时间:2024/04/30 14:58
在javaweb开发中使用到三大框架开发的时候会涉及到Dao层,Service层,Action层,接下来是贴出在Service层中抽取出公共业务逻辑模块的BaseService接口和BaseServiceImpl实现类。
package com.shop.service;import java.util.List;import com.shop.pojo.Category;public interface BaseService<T> {public void save(T t);public void update(T t);public void delete(int id);public T queryById(int id);public List<T> query();}
我们定义一个CategoryService接口,继承上面的接口:
package com.shop.service;import java.util.List;import com.shop.pojo.Category;public interface CategoryService extends BaseService<Category>{//定义属于CategoryService的业务方法 }
BaseServiceImpl:公共业务逻辑实现类
package com.shop.service.impl;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.context.annotation.Lazy;import org.springframework.context.support.ClassPathXmlApplicationContext;import org.springframework.stereotype.Service;import com.shop.pojo.Category;import com.shop.service.BaseService;import com.shop.service.CategoryService;/** * * @author Administrator *实现BaseService接口定义的方法,所有模块都有公共的方法 */@Service(value="baseService")//没有指定value的话,默认是第一个字母小写的类名,可以看做是xml中的bean的id@SuppressWarnings("unchecked")@Lazy(value=true)//延迟初始化,防止自身实例化时,调用构造BaseServiceImpl方法出现object类型转换异常public class BaseServiceImpl<T> implements BaseService<T>{@Resource(name="sessionFactory")protected SessionFactory sessionFactory;private Class clazz;//存储了具体操作的类,public BaseServiceImpl(){System.out.println(this);System.out.println(this.getClass());System.out.println(this.getClass().getSuperclass());System.out.println(this.getClass().getGenericSuperclass());Type type= this.getClass().getGenericSuperclass();ParameterizedType parameterizedType=(ParameterizedType) type;clazz= (Class) parameterizedType.getActualTypeArguments()[0];System.out.println(clazz);}public static void main(String[] args) {new ClassPathXmlApplicationContext("applicationContext-*.xml");}public void save(T t) {// TODO Auto-generated method stubSession session=sessionFactory.getCurrentSession();//得到当前线程的sessionFactorysession.save(t);}public void update(T t) {// TODO Auto-generated method stubSession session=sessionFactory.getCurrentSession();//得到当前线程的sessionFactorysession.update(t);}public void delete(int id) {// TODO Auto-generated method stubSession session=sessionFactory.getCurrentSession();//得到当前线程的sessionFactory//session.delete(session.get(Category.Class,id));//生成两天sql语句session.createQuery("delete From "+clazz.getSimpleName()+" c where c.id=:id").setInteger("id", id).executeUpdate();}public T queryById(int id) {Session session=sessionFactory.getCurrentSession();return (T) session.get(clazz, id);}public List<T> query() {// TODO Auto-generated method stubSession session=sessionFactory.getCurrentSession();return session.createQuery("From "+clazz.getSimpleName()).list();}}
下面写一个CategoryServiceImpl:
package com.shop.service.impl;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Service;import com.shop.pojo.Category;import com.shop.service.CategoryService;@Service(value="categoryService")//没有指定value的话,默认是第一个字母小写的类名,可以看做是xml中的bean的idpublic class CategoryServiceImpl extends BaseServiceImpl<Category> implements CategoryService {public CategoryServiceImpl(){super();}}
0 0
- JAVA_WEB项目之Service层抽取成BaseService和BaseServiceImpl
- BaseService --- service层的抽取
- JAVA_WEB项目之Action层利用ModelDriven抽取BaseAction
- 传智播客--进销存之项目架构,DAO层和Service层的泛型抽取和实现
- javaEE项目抽取BaseService及其注意事项
- 【SSH项目实战】国税协同平台-23.抽取BaseService
- 【SSH项目实战】国税协同平台-23.抽取BaseService
- CRM-BaseService的抽取
- 抽取通用开发BaseService
- service和serviceImpl抽取
- 85-002-8 在web项目中对service层的方法抽取
- 纳税服务系统【抽取BaseService、条件查询】
- BaseService.java(Service业务层基类)
- JAVA_WEB项目之Struts2、Spring和Hibernate三大框架的整合
- ssm项目中Dao,Service抽取
- DAO与Service层的泛型抽取与实现
- BaseService
- BaseService
- 5分钟搭建一个HTML5视频聊天Demo(WebRTC+NodeJS)
- python要学习的东西
- codeforces#FF DIV2C题DZY Loves Sequences(DP)
- js判断上传控件FileUpload是否选择和文件类型
- solr :term 查询, phrase查询, boolean 查询
- JAVA_WEB项目之Service层抽取成BaseService和BaseServiceImpl
- 【SCM】CI配置收集
- BUPT Summer Journey #test1 B
- Android中的onTouch()事件如何区分单击事件和滑动事件
- vc真彩工具条的实现
- single number
- 微信加入“微社区” Discuz!发力移动社交
- poj-1325
- 寻找汉密尔顿回路(java版)