dotNet程序员的Java爬坑之旅(二)

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

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

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

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

原文地址:https://www.cnblogs.com/sskun0355/p/9478897.html

时间: 2024-10-09 04:52:32

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

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

仔细想了下还是转java吧,因为后期不管是留在北京也好还是回老家也好,java的工作都会好找一点.现在的工作主要还是写.net,目标是下一次离职的时候可以找到一份全职的java工作,我一直都觉得实践才是学习的最好方法. 现在这些的文章内容,主要是来自月慕课网的教学视频和自己的一些总结整理,我计划从一个小白做起,一步一步的去了解熟悉java这门语言. 从java的基础语法开始到现在看的spring,已经花了一定的时间和精力,现在我感觉不管是java还是.net在很多地方都能找到相似之处,现在对我来

Vue爬坑之旅(二):vue单页面二级套嵌路由

在一个单页面应用里使用二级套嵌路由 目录结构如下: 其中main.js为全局配置文件,App.vue为项目入口. main.js中路由配置如下 import Vue from 'vue'//引入vue import App from './App'//引入主模板 import Router from 'vue-router'// 引入router路由 // 引入项目的模块组件 import licai from './components/licai' import home from './c

黑马程序员 内部类 Java

内部类:将一个类定义在另一个类里面,对里面那个类就叫做内部类(内置类,嵌套类). 访问特点:内部类可以直接访问外部类中的成员,包括私有成员.而外部类要访问内部类中的成员必须要建立内部类的对象. class Outer{ private int  x=3; class Inner{ void function(){ function1(); System.out.println("内部类"+x); } } void function1(){ System.out.println(&quo

黑马程序员之Java多线程学习

android培训  java培训 期待与您交流! 这一篇文章主要关于java多线程,主要还是以例子来驱动的.因为讲解多线程的书籍和文章已经很多了,所以我也不好意思多说,呵呵.大家可以去参考一些那些书籍.我这个文章主要关于实际的一些问题.同时也算是我以后复习的资料吧,.呵呵大家多多指教. 同时希望多结交一些技术上的朋友.谢谢. -------------------------------------------------------------------------------------

越来越多的Java程序员转行Java大数据...

JAVA的精密,强大,拥有其它语言不可替代的性能和可维护性,早已经是成为最受欢迎的编程语言之一,很多人想进入IT行业,首选的第一门语言就是JAVA. 但是,在未来肯定是大数据的天下,人工智能的爆发,将会有大量企业会进入大数据领域,从而产生大量的大数据人才需求. 据最新发布的<大数据人才报告>显示,目前全国的大数据人才仅46万,未来3-5年内大数据人才的缺口将高达150万.领英报告表明,数据分析人才的供给指数最低,仅为0.05,属于高度稀缺.数据分析人才跳槽速度也最快,平均跳槽速度为19.8个月

说一个MySQL里可能90%的程序员都会遇到的坑

说一个MySQL里可能90%的程序员都会遇到的坑最近我遇到了一个bug,我试着通过Rails在以"utf8"编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect string value: '\xF0\x9F\x98\x83 <-' for column 'summary' at row 1 我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串" 原文地址:https://blog.51c

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N

Android爬坑之旅:软键盘挡住输入框问题的终极解决方案

前言 开发做得久了,总免不了会遇到各种坑.而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页面底部有一个EditText,如果不做任何处理,那么在软键盘弹出的时候,就有可能会挡住EditText.对于这种情况的处理其实很简单,只需要在AndroidManifest文件中对activity设置:android:windowSoftInputMode的值adjustPan或者adjustResi

《程序员的职业修养》读后感(二):说"不" and 说“是”

简介:"能就是能,不能就是不能,不要说'试试看'."另一方面,作为一个初入行业的程序员,我们有没有权利,应不应该说不(或是)呢,又该何时何地何事说"不(或是)"?这篇文章就解决此问题. 相信工作的人对此都会很有感触,当老板交给我们一个任务时,不管是对自己能力的不清楚认识,还是迫于老板的"淫威",大家貌似好像都不敢说一句能或者不能,总是选择一个折中的答案:我去试试看.可是这样的话语给老板的潜意识意思就是你可以完成,但是在你这里,这句话的潜意思就是我也很可能完不成.所以