程序猿的日常——Mybatis现学现卖】的更多相关文章

最近有一个小项目需求,需要用spring mvc + mybatis实现一个复杂的配置系统.其中遇到了很多不太常见的问题,在这里特意记录下: 主要涉及的内容有 事务 多表删除 插入并返回主键 1 spring mvc + mybatis的事务 背景 大概就是有ABC三张表,A表跟B表是一对多关系,B表跟C表是一对多关系.在创建的时候提交了一个大的json,需要先暴力删除A中某行关联的所有B和所有C,然后分别创建B,再创建C.这些操作要在一个事务中进行,不能删完,插入失败. 结构长得如下: { "…
web开发经历了很漫长的时间,在国内也快有十几年的时间了.从最开始的进程级到现在的MVC经历了很多的改进和优化,本篇就主要复习了解下Spring MVC相关的知识. 发展历程 第一阶段 CGI进程响应 这一阶段,服务器比较弱,请求也很简单,就是用户发一个请求,服务器接收后新建进程,然后返回结果. 这种方式一看代价就很大,每次都新建进程,很麻烦. 第二阶段 Servlet线程级别响应 Servlet结构跟上面差不多,只不过每次都只是新建一个线程,这样代价就小很多了. Servlet的生命周期有四个…
列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再啰嗦一下,整理下相关的内容. 基础知识 一般计算机相关的专业都应该学过数据结构,而很多的集合都是应用了经典的数据结构设计的.比如数组.栈.队列.链表.树等等,里面也会用到很多常见的查找或者排序算法,所以就先简单的回顾下. 数组 数组在c语言里面用的很广泛,刚开始学习的时候,整天的空指针和数组越界.后…
equals和hashCode是我们日常开发最常使用的方法,但是因为一般都使用默认的规则,因此也很少会引起关注.不过了解他们的用途和设计的原则,还是会帮助我们更好的设计代码. equals equals是java很基础的一个问题,通常都会跟==来做比较.那么看看下面的问题: int a = 1; int b = 1; System.out.println(a==b);//true Integer a1 = new Integer(1); Integer a2 = new Integer(1);…
http://blog.csdn.net/u010019717/article/details/77510066?ref=myread http://blog.csdn.NET/u010019717 推荐一下这个国人弄的基于IntelliJ IDE 弄得插件 EmmyLua .  他的QQ群: 29850775 github: https://github.com/tangzx/IntelliJ-EmmyLua oschina: http://git.oschina.net/tangzx/Int…
目录 1.Git下载 2.Git在Windows下的详细安装 3.验证Git是否安装成功 1.Git下载 进入官方地址下载Git客户端:https://git-scm.com/download/win 国内Git客户端镜像下载地址:[https://npm.taobao.org/mirrors/git-for-windows/]( 在下图的位置进行下载. 2.Git在Windows下的详细安装 运行Git安装文件,在桌面点击下面图标. (1)Step 1 Information(信息) 首先看到…
目录 1.Tree对象介绍 2.Tree对象说明 (1)初始化一个新的本地版本库 (2)创建一个树对象(重点) (3)创建第二个文件(重点) (4)将第一个树对象加入暂存区,使其成为新的树对 3.总结 (1)分析每个树对象的存储结构 (2)blob对象和tree对象(重点) (3)总结(重点) 4.问题 5.本文用到的命令总结 1.Tree对象介绍 接下来要探讨的 Git 对象类型是树对象(tree object),它能解决文件名保存的问题.tree对象可以存储文件名,也允许我们将多个文件组织到…
目录 1.用学过的命令进行文件重命名 2.使用git mv命令进行文件重命名 我们这篇文章来说说在Git中如何进行文件重命名. 提示一下,下面所说明的是对已经被Git管理的文件进行重命名,未被Git追踪的文件,直接修改文件名称就可以了. 1.用学过的命令进行文件重命名 (1)准备一个需要修改文件名的文件. # 1.准备一个干净的Git仓库 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git status On b…
angularjs的双向数据绑定是个重要的特性,它让我们的代码简洁了许多,然而它又是如何知道数据发生了变化并改变页面的呢.最近看了一篇介绍觉得十分有用 首先,在angularjs中是有$watch事件的,他的作用就是用来监听数据的变化,并且其有一个参数为回调函数,在发生变化时会执行该函数,而$digest()则是一个循环程式,当其被调用的时候就会循环遍历并触发所有model发生变化了的$watch.再说到$apply(),他就是angularjs用来调用$digest的,一般情况下它都会根据上下…
Keil uVision 使用教程 1.如果有旧的工程在,先关闭旧工程.Project -> Close Project2.新建工程.Project -> New uVision Project...找个地方保存工程.点击确定后,弹出如下图对话框.Intel -> 8051AH -> OK点击确定后,弹出如下图对话框.选择否.工程建立完毕.3.新建文件.File -> New (Ctrl + N) 可以先写代码,也可以过后再写.Ctrl+S保存在工程目录下(随便,能找到就行)…