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

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

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. bootstrap-datetimepicker.js的漢化注意點

    1.要引入bootstrap.css ,datetime.picker.css 2.引入的JS文件如下: <script type="text/javascript" src ...

  2. Celery异步的分布式任务调度理解

    什么是Celery呢? Celery是一个用Python开发的异步的分布式任务调度模块. Celery本身不包含消息服务,使用第三方消息服务,也就是Broker,来传递任务,目前支持的有Rebbimq ...

  3. vue+sass实现切换字体大小

    接到领导指示,用户嫌我做的页面字体太小,15px的字体叫小?领导说用户多是上了年纪的人.没办法,改吧,谁让咱是个搬砖的呢..咳咳 我寻思着这次改大了,下次用户嫌大再让改小呢?干脆给他做个选择字号的功能 ...

  4. python 反射 hasattr getattr

    class BlackMedium:     feature='Ugly'     def __init__(self,name,addr):         self.name=name       ...

  5. js,jquery分别怎么判断页面元素是否存在

    1JS判断方法:if(document.getElementById("XXX")){  console.log("存在")  } 2Jquery判断方法:if ...

  6. 初次接触Linux

    最近由于工作需求,需要接触Linux系统. 使用VMware虚拟机,安装ubuntu系统.网上教程很多. 配置opencv环境.这是我参考的网上帖子https://blog.csdn.net/fish ...

  7. jquery:input操作

    1:让一个或一组单选框取消选择 $(".radio1").attr("checked",false); 2:查看一组单选框有么有被选中一个 $(".r ...

  8. EL表达式与JSTL标签map遍历varStatus属性下标使用

    在JSP页面开发中,JSTL标签库迭代标签<c:forEach>为我们迭代遍历数组集合提供了一种选择. 遍历过程中varStatus属性为我们遍历集合提升了很大操作空间. 贴一下具体使用 ...

  9. 2.数据库的基本操作<针对于库层面的操作>

    1.查看已有数据库: MySQL [(none)]> show databases; +--------------------+ | Database | +----------------- ...

  10. 【译】图解Transformer

    目录 从宏观上看Transformer 把张量画出来 开始编码! 从宏观上看自注意力 自注意力的细节 自注意力的矩阵计算 "多头"自注意力 用位置编码表示序列的顺序 残差 解码器 ...