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

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

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. setsockopt详解

    Socket描述符选项[SOL_SOCKET] #include <sys/socket.h>  int setsockopt( int socket, int level, int op ...

  2. IntelliJ IDEA 设置背景图片

    1.在idea中 按快捷键   Ctrl+Shift+A   出现如图 输入  Set Background Image  双击  Set Background Image 2.选择要添加的图片的路径 ...

  3. Spring Boot微服务如何集成fescar解决分布式事务问题?

    什么是fescar? 关于fescar的详细介绍,请参阅fescar wiki. 传统的2PC提交协议,会持有一个全局性的锁,所有局部事务预提交成功后一起提交,或有一个局部事务预提交失败后一起回滚,最 ...

  4. verilog 介绍

    Verilog HDL Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由.VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog HDL烦琐一些,但 ...

  5. 8. springboot logback 日志整合

    在resources目录下,新建log/logback-spring.xml文件,内容如下: <?xml version="1.0" encoding="UTF-8 ...

  6. sqlPlus基本操作

    SQL*PLUS连接方法 1. $ sqlplus "user/password[@service] [as sysdba]" 2. $ sqlplus /nolog SQL> ...

  7. Golang源码探索(二) 协程的实现原理(转)

    Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底 ...

  8. groovy 知识集锦

    对应官方的<Program structure>的中文翻译 http://www.cnblogs.com/zhaoxia0815/p/7404387.html

  9. angualrjs添加ngTouch

    angularjs没有touch时间需要添加directive 插件代码如下 "use strict"; angular.module("ngTouch", [ ...

  10. gradle 排除jar包依赖

    1.直接在configuration中排除 configurations { compile.exclude module: 'commons' all*.exclude group: 'org.gr ...