springmvc+mybatis
springmvc+mybatis 框架学习博客
双斜杠少年
希望经记录下来自己学习过程,并和大家一块分享
展开
-
mybatis 获取更新(update)记录的id 之< selectKey > 用法
问题用mybatis update 记录,更新过后想要更新记录的id 怎么办?平常我门都是更新数据,用更新的条件再查询一次,得到更新的记录。这样我门就进行了两次数据库操作,链接了两次数据库。增加了接口的处理事件,因为链接数据库是很耗时的操作。简介其实可以通过 mybatis 的 selectKey 标签来解决这个问题。 selectKey 这个标签大家基本上都用过,比如在插入数据的时候,返回插入数原创 2017-07-03 22:01:29 · 43719 阅读 · 32 评论 -
mybitis 利用association或collection传递多参数子查询
有时候我们在查询数据库时,需要以查询结果为查询条件进行关联查询。在mybatis 中通过 association 标签(一对一查询,collection 一对多 查询) 实现延迟加载子查询 <resultMap id="xxxMap" type="xxxx.bean.xxx" extends="zzzzMap"> <association property="destName"原创 2017-08-02 22:20:11 · 11476 阅读 · 0 评论 -
spring aop注解失效之谜
问题:在spring 中使用 @Transactional 、 @Cacheable 或 自定义 AOP 注解时,会发现个问题:在对象内部的方法中调用该对象的其他使用aop机制的方法,被调用方法的aop注解失效。这句话可能说的有点拗口,那么我们来看几个 aop 失效的例子吧事物失效public class TicketService{ //买火车票 @Transactional原创 2017-08-18 00:53:26 · 13436 阅读 · 4 评论 -
addShutdownHook+ @Scheduled(cron = "0 0/1 * * ?" )
钩子程序 Runtime.getRuntime(). (shutdownHook); 这个方法的含义说明: 这个方法的意思就是在jvm中增加一个关闭的钩子,当jvm关闭的时候,会执行系统中已经设置的所有通过方法addShutdownHook添加的钩子,当系统执行完这些钩子后,jvm才会关闭。所以这些钩子可以在jvm关闭的时候进行内存清理、对象销毁等操作。一、编写个测试类转载 2016-08-08 18:11:17 · 5183 阅读 · 0 评论 -
Ant 风格路径表达式
ANT通配符有三种:通配符 说明例子:URL路径 说明属性: 最长匹配原则(has more characters) 说明,URL请求/app/dir/file.jsp,现在存在两个路径匹配模式/*/.jsp和/app/dir/.jsp,那么会根据模式/app/dir/.jsp来匹配原文链接:http://blog.csdn.net/songdexv/article/details/7219转载 2017-02-17 17:25:34 · 2399 阅读 · 0 评论 -
Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全
本文探讨Spring Security 4 基于@PreAuthorize, @PostAuthorize, @Secured和 Spring EL表达式的方法级的安全。想要开启Spring方法级安全,你需要在已经添加了@Configuration注解的类上再添加@EnableGlobalMethodSecurity注解:package com.websystique.springsecurity.转载 2017-02-19 18:17:32 · 12299 阅读 · 0 评论 -
网站的海量数据和高并发的解决方案(一)
现在无论是企业的业务系统还是互联网上的网站程序都面临着数据量大的问题,这个问题如果解决不好将严重的影响系统的运行速度,下面就针对这个问题的各种解决解决方案进行介绍。1. 缓存和页面静态化1.1 缓存数据量大这个问题最直接的解决方案就是使用缓存,缓存就是将数据库中获取的结果暂时保存起来在,在下次使用的时候无需从数据库中提取,这样可以大大降低数据库压力。常用的缓存框架有Ehcache、Memcache原创 2017-03-27 00:03:47 · 4244 阅读 · 0 评论 -
网站的海量数据和高并发的解决方案(二)
高并发的解决方案除了数据量大,另外一个常见的问题就是并发量高,很多架构就是针对这个问题设计出来的。1.应用和静态资源分离刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。 通过不同的域名可原创 2017-05-08 21:27:50 · 6021 阅读 · 0 评论 -
spring的multipartResolver和java后端获取的MultipartHttpServletRequest方法对比 (附:遇到的坑)
原文地址: http://www.cnblogs.com/yskcoder/p/4718198.html这两天在用spring进行上传上遇到问题,今天进行了问题的排查,这个过程也增加了我看spring源码的兴趣!还是很有收获的!首先首先先给A组提供了上传接口,并没有在spring的配置文件进行multipartResolver的配置,后台Controller的java的获取为:MultipartR转载 2017-05-25 11:53:38 · 12824 阅读 · 0 评论 -
spring 之 自己动手实现IOC
扯淡学 java 的人应该都知道spring,学spring的人呢都应该知道 IOC和 AOP 对吧。今天就简单的说一下spring 的IOC。IoC是Spring框架的核心内容,IoC(Inversion of Control)控制反转,是一种设计思想,DI(依赖注入)是实现IoC的一种方法。 其实spring就是一个容器,一个bean容器。主要是完成了完成对象的创建和依赖的管理注入。什么是控制原创 2017-07-11 22:49:38 · 2360 阅读 · 1 评论 -
利用java 的动态代理模拟spring的AOP
AOPAOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP允许开发者定义纵向的关系,但并不适合定义横向的关系,例如日志功能。平常我门需要记录一些操作的日志,需要在操作的业务逻辑代码里嵌入日志模块的代码。这些日志模块的代码与操作的代码逻辑无关,只是做一个记录,而且在其原创 2017-07-13 00:00:01 · 1590 阅读 · 1 评论 -
mybatis 的批量操作,查询、更新、插入
mybatis 的批量更新 主要依靠 foreach 标签拼接sql 实现批量操作。第一种方法,拼装成一条sql<update id="batchUpdateRawEventStatus" parameterType="java.util.List"> update raw_event set status = 1 where id in <foreach collection="list原创 2017-02-14 00:09:55 · 7508 阅读 · 0 评论 -
springmvc 入门环境搭建
springmvc框架什么是springmvcspringmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。springmvc是一个基于mvc的web框架。 springmvc框架第一步:发起请求到前端控制器(DispatcherServlet)第二步:前端控制器请原创 2015-07-20 20:55:28 · 997 阅读 · 0 评论 -
mybitis 环境搭建和入门程序
1.1 MyBatis介绍MyBatis 本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不原创 2015-07-21 11:42:02 · 1196 阅读 · 0 评论 -
mybatis总结和与hibernate比较
#{}和${} #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。如果接收简单类型,#{}中可以写成value或其它名称。#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。 ${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。${}接收输入参数,类型可以是简单类型原创 2015-07-21 11:47:33 · 1259 阅读 · 0 评论 -
mybatis的dao接口实现小结
原始Dao开发方式系统 框架中,dao层的代码是被业务层公用的。理解步骤1. 写xml文件;2. 写dao接口3. 写daoimpl数据库实现类映射文件 user. xmlxmlversion="1.0"encoding="UTF-8"?>DOCTYPEmapperPUBLIC "-//mybatis.o原创 2015-07-22 11:25:12 · 1988 阅读 · 0 评论 -
mybatis 的mapper代理小结
Mapper动态代理方式 实现步骤1. mapper.xml 配置文件 (重)2. mapper.java 接口(重)3. 记得加载映射文件SqlMapConfig.xml 实现原理 Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象原创 2015-07-22 11:37:44 · 2171 阅读 · 0 评论 -
mybatis 的SqlMapConfig.xml配置文件(精华) 小结
SqlMapConfig.xml配置文件(精华)配置内容SqlMapConfig.xml中配置的内容和顺序如下:properties(属性)(常用,需要掌握)settings(全局配置参数)typeAliases(类型别名)(常用,需要掌握)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments原创 2015-07-22 12:03:47 · 2669 阅读 · 0 评论 -
mybatis的mapper.xml 小结
1 Mapper.xml映射文件需掌握动态sql(重点掌握)和pojo对象 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。1.1 parameterType(输入类型)1.1.1 #{}与${}#{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句原创 2015-07-22 12:44:19 · 12450 阅读 · 3 评论 -
mybatis 实现一对一关联表查询
1 一对一查询1.1 需求查询订单信息,关联查询创建订单的用户信息1.2 resultType1.2.1 sql语句确定查询的主表:订单表确定查询的关联表:用户表 关联查询使用内链接?还是外链接? 由于orders表中有一个外键(user_id),通过外键关联查询用户表只能查询出一条记录,可以使用内链接。关联查询,原创 2015-07-24 13:04:36 · 1527 阅读 · 0 评论 -
mybatis 实现关联查询的一对多和多对多查询
1.1 一对多查询案例:查询所有订单信息及订单下的订单明细信息。订单信息与订单明细为一对多关系。使用resultMap实现如下:1.1.1 Sql语句:三张表的关联查询 标红的分别为查询字段,查询的表,关联查询的条件SELECT orders.*, user.username, user.address, orderdetail.idorderde原创 2015-07-24 13:38:41 · 19414 阅读 · 2 评论 -
mybatis 实现一对一,一对多,多对多关联查询 小结
1 resultType和resultMap小结1.1 实现一对一查询:resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。如果没有查询结果的特殊要求建议使用resultType。定义专门的po类作为输出类型,其中定义了sql查询结果集所有的字段。此方法较为简单,企业中使用普遍。原创 2015-07-24 13:45:19 · 8911 阅读 · 1 评论 -
mybitis利用association 实现延迟加载
1 延迟加载1.1 什么是延迟加载高级映射:对查询结果有特殊要求的resultMap可以实现高级映射(使用association、collection实现一对一及一对多映射),association、collection具备延迟加载功能。需求:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需原创 2015-07-24 22:34:47 · 1770 阅读 · 0 评论 -
mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
1查询缓存1.1什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)原创 2015-07-26 16:52:11 · 62111 阅读 · 9 评论 -
spring 和 mybatis 的整合
1 spring和mybatis整合1.1 整合思路 需要spring通过单例方式管理SqlSessionFactory。spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)持久层的mapper都需要由spring进行管理。1.2 整合环境创建一个新的ja原创 2015-07-28 21:01:51 · 1979 阅读 · 0 评论 -
mybatis 的逆向工程
1 逆向工程1.1 什么是逆向工程mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..) 数据库到java 代码 企业实际开发中,常用的逆向工程方式:由于数据库的表生成java代码。1.2 逆向工程目录1.3原创 2015-07-28 21:46:26 · 23009 阅读 · 9 评论 -
springmvc 和mybatis 整合(一)
springmvc和mybatis整合1.1 需求使用springmvc和mybatis完成商品列表查询。1.2 整合思路springmvc+mybaits的系统架构:(面试问题)从后往前整合Spring是一个javabean的ioc容器;第一步:整合dao层 mybatis和spring整合,通过spring管理mapper接口。原创 2015-07-29 23:08:39 · 2401 阅读 · 0 评论 -
spring和mybatis 整和(二)商品信息的修改
1.2 商品修改需求操作流程:1、进入商品查询列表页面2、点击修改,进入商品修改页面,页面中显示了要修改的商品(从数据库查询) 要修改的商品从数据库查询,根据商品id(主键)查询商品信息3、在商品修改页面,修改商品信息,修改后,点击提交 步骤总结 : 1.用逆向工程生成ItemsMapper.java和ItemsMapper.xml原创 2015-07-31 16:07:55 · 1240 阅读 · 0 评论 -
springmvc中@RequestMapping 和 controller 小结
1 @RequestMappingn url映射定义controller方法对应的url,进行处理器映射使用。为了对url进行url分类管理,在controller下定义跟路径,最终访问url是跟路径+子路径@RequestMapping(value="/item")或@RequestMapping("/item)value的值是数组,可以将多个url映射到同一个方原创 2015-07-31 16:42:00 · 2867 阅读 · 0 评论 -
springmvc 的参数绑定,springmvc和 struts2的区别
1 参数绑定1.1 spring参数绑定过程从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到controller方法的形参上。形参都是参数绑定需要做的事 springmvc中,接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收!!!! 1.2 默认支持的类型直接在con原创 2015-07-31 19:07:53 · 2577 阅读 · 0 评论 -
springmvc参数绑定(二)
1 包装类型pojo参数绑定采用类似struts中对象.属性的方式命名,需要将pojo对象作为一个包装对象的属性,action中以该包装对象作为形参。1.1 需求 商品查询controller方法中实现商品查询条件传入。1.2 实现方法第一种方法:在形参中添加HttpServletRequest request参数,通过request接收查询条件参原创 2015-08-01 19:38:49 · 809 阅读 · 0 评论 -
springmvc使用校验框架validation校验
1 springmvc校验(服务端 )b/s系统中对http请求数据的校验多数在客户端进行,这也是出于简单及用户体验性上考虑,但是在一些安全性要求高的系统中服务端校验是不可缺少的,本节主要学习springmvc实现控制层添加校验。 Spring3支持JSR-303验证框架,JSR-303 是JAVA EE 6 中的一项子规范,叫做BeanValidation,官方原创 2015-08-01 22:24:47 · 10034 阅读 · 0 评论 -
springmvc 的数据回显
1 数据回显1.1 什么数据回显提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。即表单提交失败不需要再回到表单页面重新填写,原来提交的数据需要重新在页面上显示。1.2 pojo数据回显方法1、springmvc默认对pojo数据进行回显。pojo数据传入controller方法后,springmvc自动将pojo数据放到request域原创 2015-08-02 11:39:00 · 13566 阅读 · 1 评论 -
springmvc+mybatis 的异常处理
1 异常处理1.1 异常处理思路系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。 系统的dao、service、controller出现都通过throwsException向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处原创 2015-08-02 12:23:47 · 3537 阅读 · 0 评论 -
springmvc 上传图片文件和创建图片虚拟路径读取图片
1 上传图片1.1 需求在修改商品页面,添加上传商品图片功能。1.2 springmvc中对多部件类型解析在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。 在springmvc.xml中配置multipart类型解析器。(如果表单的类型是mult原创 2015-08-02 13:01:44 · 15403 阅读 · 5 评论 -
springmvc 的json数据交互
1 json数据交互(重点)1.1 为什么要进行json数据交互json数据格式在接口调用中、html页面中较常用,json格式比较简单,解析还比较方便。比如:webservice接口,传输json数据. 1.2 springmvc进行json交互 1、请求json、输出json,要求请求的是json串,所以在前端页面中需要将请求的内容转成原创 2015-08-02 16:12:24 · 4854 阅读 · 3 评论 -
springmvc restful 支持
1 RESTful支持1.1 什么是RESTfulRESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。 RESTful(即Representational StateTransfer的缩写 即表现层的状态转换)其实是一个开发理念,是对http的很好的诠释。(状态转换最关键)原创 2015-08-02 16:21:36 · 1521 阅读 · 1 评论 -
springmvc 拦截器、过滤器、AOP
1拦截器1.1 拦截定义Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。要注意拦截器放的位置顺序定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。(面试问题)拦截器的机制基于aop 面向切面编程public classHandlerI原创 2015-08-02 16:43:08 · 1406 阅读 · 0 评论 -
mybatis 的条件查询的三个方法实现
Mybatis的多条件查查询,传递参数,第一种方法 传递map 型,第二种方法 传递pojo 带三种方法 多个参数如果不封装成Map,就用序列号代替。如果参数比较多且乱建议用map 型,如果有定义的pojo 则建议用pojo类型,如果传递的参数不多,则建议用序列号代替的方法。1.Map 型(当传入多个参数时可以使用map型)例 : mapper.java//分页查询原创 2015-08-12 09:24:39 · 32421 阅读 · 0 评论 -
SpringMVC Controller介绍及常用注解
一、简介 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controlle转载 2016-07-20 14:14:37 · 772 阅读 · 0 评论