囉里囉唆的寫了一大堆,最後還是全刪除了。哎~

  言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧。

Mybatis批量新增數據:

  批量插入:儅我們有批量插入數據的需求時,比如插入100條數據,傳統的做法是利用for循環100次,但是在這種方式存在嚴重的效率問題,需要頻繁的獲取連接。

  此時比較好的解決辦法就是使用Mybatis支持批量插入的配置和語法。

  需要在數據庫連接字符串処設置allowMultiQueries=true

  獲取sqlsessionfactory

public static SqlSessionFactory sqlSessionFactory = null;
    public static SqlSessionFactory getSqlSessionFactory() {
        if (sqlSessionFactory == null) {
            String resource = "mybatis-config.xml";
            try {
                Reader reader = Resources.getResourceAsReader(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return sqlSessionFactory;
    }
 
 public void testBatchForExecutor()
    {
        SqlSession sqlSession = this.getSqlSessionFactory().openSession(ExecutorType.BATCH);
        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);
        for (int i = 0; i <10000 ; i++)
        {
            personMapper.addPerson(new User("jerry","bj"));
        }
        sqlSession.commit();
        sqlSession.close();
    }
 
Mybatis攔截器實現分頁:
  使用PageHelper插件分頁即可,詳細介紹參考pagehelper的github,這裏不再贅述。
  但是插件的使用可能會修改底層設計,使用需慎重
  插件式生成的層層代理對象的責任鏈模式,使用反射機制實現
  插件的編寫要考慮全面,特便是多個插件層層代理的時候。
  還是比較推薦使用傳統的sql語句方式,這方面就比較基礎了,就不多説了。
 
spring MVC:
  springMVC是spring框架的一個後續產品,目前最好的實現MVC設計模式的框架,和spring框架可以很好的結合使用,不需要整合
  核心組件:
    DispatcherServlet:前置控制器,也是整個SpringMvc框架的核心
    HandleMapping:將請求映射到Handler
    Handler:後端控制器,完成具體的業務邏輯
    HandlerInterceptor:處理器攔截器
    HandlerExecutionChain:處理器執行鏈
    HandlerAdapter:處理器適配器
    ModelAndView:裝載模型數據和視圖信息
    ViewResolver:視圖解析器
  實現流程:
    1、客戶端請求被DispatcherServlet接收
    2、DispatcherServlet將請求映射到Handler
    3、生成Handler以及HandlerInterceptor
    4、返回HandlerExecutionChain
    5、DispatcherServlet通過HandlerAdapter執行Handler
    6、返回一個ModelAndView
    7、DIspatcherServlet通過ViewResolver進行解析
    8、返回填充了模型數據的view,響應給客戶端
如圖(網上藉鑒,侵權聯係我刪除):

  值得一提的是大部分的組件都由框架提供,開發者只需要通過配置進行關聯即可,需要手動編寫的只有Handler和view。

環境配置:

springMVC 攔截器:

  配置如上:

  Java代碼:

攔截器和過濾器:

(1)过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。

(2)拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。

具體區別:

(1)拦截器是基于java的反射机制的,而过滤器是基于函数回调。

(2)拦截器不依赖于servlet容器,而过滤器依赖于servlet容器。

(3)拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

(4)拦截器可以访问action上下文、值栈里的对象,而过滤器不能。

(5)在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

(6)拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

摘自:https://blog.csdn.net/qq_36411874/article/details/53996873

拦截器功在对请求权限鉴定方面确实很有用处

dotNet程序员的Java爬坑之旅(二)的更多相关文章

  1. dotNet程序员的Java爬坑之旅(一)

    仔细想了下还是转java吧,因为后期不管是留在北京也好还是回老家也好,java的工作都会好找一点.现在的工作主要还是写.net,目标是下一次离职的时候可以找到一份全职的java工作,我一直都觉得实践才 ...

  2. dotNet程序员的Java爬坑之旅(三)之spring MVC篇一

    使用maven構建springMVC項目,開發工具為IDEA 一.構建Maven項目,模板為WebApp 二.在pom文件中配置SpringMvc配置(springMvc需要以來servlet ,如本 ...

  3. 黑马程序员——【Java基础】——面向对象(二)异常机制、包(Package)

    ---------- android培训.java培训.期待与您交流! ---------- 一.异常机制 (一)异常概述 1.异常:就是程序在运行时出现不正常情况. 2.异常类:程序在运行时,出现的 ...

  4. 黑马程序员:Java基础总结----泛型(高级)

    黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...

  5. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

  6. 黑马程序员:Java基础总结----静态代理模式&动态代理

    黑马程序员:Java基础总结 静态代理模式&动态代理   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public  class  Ts {   ...

  7. 黑马程序员:Java基础总结----枚举

    黑马程序员:Java基础总结 枚举   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...

  8. 黑马程序员:Java基础总结----反射

    黑马程序员:Java基础总结 反射   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...

  9. 黑马程序员:Java基础总结----JavaBean 内省

    黑马程序员:Java基础总结 JavaBean 内省   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! JavaBean  内省 软件包 java.beans 包含与开 ...

随机推荐

  1. java-框架-索引

    spring 整体了解 spring 入门demo Spring整体了解 spring梳理 Spring线程池的5个要素 spring的事务隔离级别以及传播性 事务4个隔离界别及脏读,不可重复读,幻读 ...

  2. spring命名空间

    作为一名入门级菜鸟的我,在刚开始学spring框架的时候,对于命名空间不是很理解,只是在跟着老师敲代码.随着后来学习的深入,慢慢了解到命名空间的意义.如果你没有引入相应的命名空间,就不能引用相应的标签 ...

  3. ubuntu装bochs的常见问题

    1.Message: dlopen failed for module ‘x’: file not found 原因 未安装bochs-x的缘故 解决办法 sudo apt-get install b ...

  4. highcharts的用法

    <script type="text/javascript" src="../js/highcharts.js"></script>&l ...

  5. RuntimeError: module compiled against API version 0xb but this version of numpy is 0xa

    两个python,一个是本机自带的,一个是anaconda.先前呢,用自带的安装了Opencv,由于自带的python,对应的numpy版本是13, 而anaconda对应的版本是12,导致impor ...

  6. CSS设计中的错误大整理!

    如果有人发明时间机器,那应该将这些错误纠正,不然可把前端程序猿们给还惨了.大家一起看看都有哪些CSS规则应该完善. (CSS 代码) white-space: nowrap 应该 white-spac ...

  7. React Native踩坑之旅

    原文连接:http://www.studyshare.cn/blog-front/blog/details/1137 最近做一个app,使用React Native实现,如果严格按照RN官方文档去配置 ...

  8. delphi:Exception EInvalidPointer in module Project1.exe

    在用delphi XE5编程时遇到如下问题: Exception EInvalidPointer in module Project1.exe at 00007595. Invalid pointer ...

  9. (1234队)NABCD分析

    1.N(需求) 我们通过平常上自习时发现的问题和在校调查发现人们在寻找空教室上自习时会遇到诸多问题,其中 问题一:找不到空教室:5% 问题二:非上课教室学生太多:70% 问题三:有占座情况:20% 问 ...

  10. python+Django+test 测试数据库生成报错

    前提: 使用Django自带的test进行单元测试. 问题描述: 运行:python manage.py test,报错,出现数据库乱码的现象,报错如下: Creating test database ...