囉里囉唆的寫了一大堆,最後還是全刪除了。哎~
言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧。
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