传智播客java学习 OA机构设计
今天是学习oa的第二天,学的知识点比较多,我做了笔记:
Service层设计:
1,先有get(Long),因为还想要获取其他对象(不是T),所以再定义一个get(Class, Long)
2, 为什么有get(Class, Long),但不加上以下两个方法呢?
<E> E delete(Class<E> clazz, Long id);
<E> List<E> findAll(Class<E> clazz);
可以加上,但是在程序中只使用到了get(Class, Long),所以就只定义了get方法。
3,为什么使用Long型的主键呢?也可以使用Serializable类型,因为Session.get()方法就是接受这个类型。
包 资源(类、接口等)
cn.itcast.oa.service.daosupport ServiceBase(原名为DaoBase)
ServiceImplBase(原名为DaoBaseImpl)
cn.itcast.oa.service Service的接口
Cn.itcast.oa.service.impl Service的实现类
说明: Service接口可以通过继承ServiceBase得到增删改查的方法声明。Service的实现类可以通过继承ServiceImplBase得到增删改查方法的实现。通过ServiceImplBase中的getSession()与getJbpmContext()方法可以方便的获得Session与JbpmContext。
使用反射获取类型参数的真实类型的代码如下:
public DaoBaseImpl () {
Type type = this.getClass().getGenericSuperclass();
ParameterizedType pt = (ParameterizedType) type;
this.clazz = (Class<T>) pt.getActualTypeArguments()[0];
}
事务管理:
使用过滤器加 ThreadLocal 实现
因为Session可以通过JbpmContext.getSession()获得,所以只需管理 JbpmContext即可;过滤器拦截*.do的请求。
一个请求(线程)使用同一个JbpmContext 如果请求中没有使用JbpmContext或Session,就不要创建JbpmContext。
在过滤器中关闭JbpmContext时,也要调用 ThreadLocal.remove(),因为Web容器有线程池,就是两次请求有可能是使用的同一个线程。
JbpmContextFilter中的相关代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
try {
chain.doFilter(request, respons
相关文档:
在通读jdk源代码的时候发现许多java方法前都有native关键字修饰,最后得知native是与C++联合开发的时候用的,java自己开发不用。
使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。这些函数 ......
public static void main(string[] args)
{
int[] arrayInt=new int[] {1,2,3,4,5}
ArrayList alist =ArrayList();
//方法一
foreach(int i in alist)
{
&nbs ......
(注意:下面文件都在f:\myjava中)
{
3个源文件:MyApp.java,MyLib.java,PrintSchool.java;
建文件夹org\Jie
其中MyLib和PrintSchool放在包org.Jie中(import org.Jie)
在cmd.exe中运行
javac -d org\Jie MyLib.java //在org\Jie\org\jie生成了MyLib.class文件,将该文件 ......
方法一:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
方法二:
Map map = n ......
1.创建线程
方式一:通过Thread的子类创建,此时需要在Thread类的子类中重写父类的public void run()方法
方式二:直接使用Thread类创建
  ......