用了rapid-framework 也有一段时间了,但是一直没认真的去看其中的代码。里面还有很多可研究的东西,这里简单的说下action service dao 层的调用过程,service层和dao层用new对象方式,rapid中采用的是Spring自动注入方式。废话不多说下面看代码!
1.Action 层的调用Service层:
package com.project.zx.action;
import org.junit.Test;
import com.project.zx.bean.User;
import com.project.zx.service.UserManager;
public class UserAction {
//rapid 中采用Spring自动注入方式这里只是简单演示
private UserManager userManager = new UserManager();
private User user = new User();
public String save(){
user.setId(1L);
user.setName("myName");
user.setSex("男");
userManager.svae(user);//保存User
return "";
}
public static void main(String[] args) {
new UserAction().save();
}
}
2.Service 层的UserManager继承BaseManager,实现BaseManager中getEntityDao抽象方法,返回
UserDao实例,实际上Action调用的是BaseManager中的方法。
package com.project.zx.service;
import base.BaseManager;
import base.EntityDao;
import com.project.zx.bean.User;
import com.project.zx.dao.UserDao;
public class UserManager extends BaseManager<User, Long>{
private UserDao userDao = new UserDao();
@Override
protected EntityDao getEntityDao() {
[color=red]return this.userDao;[/color]
}
}
3.抽象类 BaseManager 这里的主要讲getEntityDao抽象方法,getEntityDao抽象方法经过Usermanager实现已经是一个具体的Dao,下面看代码:
package base;
import java.io.Serializable;
public abstract class BaseManager <E,PK extends Serializable>{
protected abstract EntityDao getEntityDao();
public E getById(PK id){
System.out.println("1 经过BaseManager : getById");
return (E)getEntityDao().getById(id);
}
public void svae(E entity){
System.out.println("1 经过BaseManager : save");
getEntityDao().save(entity);
}
}
4.UserDao 继承 BaseHibernateDao(抽象类增删改具体的实现) 实现 EntityDao接口,UserDao中的getEntityClass抽象方法返回具体的Class 而这Class将在BaseHibernateDao使用,代码就一个方法很简单。
package com.project.zx.dao;
import java.io.Serializable;
import com.project.zx.bean.User;
import base.BaseHibernateDao;
public class UserDao extends BaseHibernateDao<User, Long>{
@Override
public Class getEntityClass() {
return User.class;
}
}
5.下面来看BaseHibernateDao抽象类,该类实现EntityDao接口并为之实现。
package base;
import java.io.*;
public abstract class BaseHibernateDao<E,PK extends Serializable> implements EntityDao<E,PK>{
//模拟HibernateTemplate
public final HibernateTemplate getHibernateTemplate(){
HibernateTemplate hibernateTemplate = new HibernateTemplate();
return hibernateTemplate;
}
public abstract Class getEntityClass();
public Object getById(PK id) {
return this.getHibernateTemplate().get(this.getEntityClass(), id);
}
public void save(E entity) {
this.getHibernateTemplate().save(entity);
}
}
6.贴上EntityDao接口:
package base;
import java.io.Serializable;
public interface EntityDao <E,PK extends Serializable>{
public void save(E entity);
public Object getById(PK id);
}
7.HibernateTemplate 模拟Hibernate中的HibernateTemplate
package base;
import java.io.Serializable;
import com.project.zx.bean.User;
public class HibernateTemplate {
public Object get(Class entityClass , Serializable id){
return 1;
}
public void save(final Object entityClass){
System.out.println("2 保存"+entityClass.toString()+".....");
User u = (User)entityClass;
u.getId();
u.getName();
u.getSex();
System.out.println("3 保存成功 ID: "+u.getId()+" Name: "+u.getName()+" Sex : "+u.getSex());
}
}
好了讲完了,下面附上代码。
学无止境,希望老鸟们给些好的建议!