spring整合mybatis详解
在上篇螃蟹已经说明spring注解的最经典配置,接下来开始整合mybatis,这样整个项目就相对完整了。
有关本实例的源码可以到 《spring MVC注解实例及说明文档》 下载。
如需转载,请注明原出处:http://itxxz.com/a/kuangjia/2014/0531/5.html
首先依旧是找到spring的主配置文件applicationContext.xml,然后进行如下配置:

这么做的目的有两个,一个是项目启动时会直接初始化qlSessionFactory对应的实体类,不需要在dao层中再继承其它相关类。
第二个就是加载mybatis的总配置文件(mybatis-config.xml),其配置内容如下:

这里面我们将sql语句和返回的结果集进行分开,原因是如果该模块的功能较多设计到的表较多,将所有内容都写到一个配置文件中难免显得臃肿,尤其是作为后期维护或者是其他人员接手开发时,将会造成很大的困扰。
然后再打开上图中的SysUserMapper.xml文件,配置内容如下:

其中,黄色标注部分一个是该文件所对应的mapper类,也就是dao层,而且dao接口中的方法一定要和该文件中方法的id对应起来,否则在项目启动时初始化会报错。如果还是不清楚的话,可到《spring MVC注解模式的经典实现》一文中看下具体配置,是有图文详解的,地址如下。
再一个就是resultMap采用的命名空间(下图标注部分)+id的形式,这样做的好处就是方便对应该模块下的所有resultMap文件,无论是日后查找还是作为 编程规范,都是个报错的选择,只要清晰即可。
最后我们再来看下resultMap.xml的配置

至此,spring整合mybatis的配置工作就结束了,是不是觉得非常的简单,尤其是自己动手从头搭建到最后成功运行的过程,是不是很有成就感。如果有些地方不清楚的可以在文章下方留言,螃蟹会抽时间解答的,实在运行不起来的可以看看源码中的配置。
对于mybatis文件中写sql语句还有两点螃蟹需要提一下:
1、不要在sql最后加个“;”号,
很多写sql写习惯的开发者会在最后加个结束符,表示语句已经结束,而在mybatis中人家已经自己加上了, 再画蛇添足mybatis就会觉得你太小看它了不是?
2、就是CDATA区的应用
很多人不解为什么mysql中有关查询判断的为什么要加个CDATA区呢?我们看个图就大体知道了

看清楚了吗?螃蟹只不过随便写了一个判断,就这么要给简单判断也没有什么复杂语法,怎么就报错了呢?
我们先看看报的什么错:

很明显,是我们的小于号被mybatis列为无效字符了!为什么?
如果在平常写sql语句的时候,sql控制器或工具都是把sql当作一个纯语句来实现,而mybtais则不然。它是一个功能强大的orm框架,封装了很多语法,目的是让我们使用方便,前提是得用对了。它考虑到为了sql中的关键词或者字符别和自己的解析器进行冲突,就用了 xml文件中常有的CDATA区来设置,只要是写道里面的,就会被当作纯sql来解析。所以,当我们冷不丁犯了什么错的时候先别急,看看是不是违反了mybatis的规则了。
spring整合mybatis详解的更多相关文章
- Spring整合EhCache详解
一.EhCache介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开 源Java分布 ...
- spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途
Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...
- SpringBoot与PageHelper的整合示例详解
SpringBoot与PageHelper的整合示例详解 1.PageHelper简介 PageHelper官网地址: https://pagehelper.github.io/ 摘要: com.gi ...
- Spring jar包详解
Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...
- Spring——jar包详解(转)
Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...
- (转)Spring事务管理详解
背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结. 可能是最漂亮的Spring事务管理详解 https://github.com/Sn ...
- 可能是最漂亮的Spring事务管理详解
Java面试通关手册(Java学习指南):https://github.com/Snailclimb/Java_Guide 微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么 ...
- 可能是最漂亮的Spring事务管理详解 专题
微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允 ...
- 最漂亮的Spring事务管理详解
SnailClimb 2018年05月21日阅读 7245 可能是最漂亮的Spring事务管理详解 Java面试通关手册(Java学习指南):github.com/Snailclimb/- 微信阅读地 ...
随机推荐
- Altera FFT核使用详解
简介 快速傅里叶变换(Fast Fourier Transform)最为一种高效的算法,被广泛的用于信号处理与数据分析等领域.对于设计工程师来讲,自己动手采样可编程语言来实现一个FFT/IFFT模块, ...
- [VC]strcpy memcpy memset区别与简介
strcpy 原型:extern char *strcpy(char *dest,char *src); 用法:#include <string.h> 功能:把src所指由NULL结束的字 ...
- 利用Python实现 队列的算法
以下内容都是来自“悟空“大神的讲解,听他的视频课,利用Python实现堆栈的算法,自己做了一些小总结,可能会存在自己理解的一些误区, 1.栈的实现 队列的特征是先进先出,同我们生活中的队列具有相同的特 ...
- 【BZOJ1087】[SCOI2005] 互不侵犯King(状压DP)
点此看题面 大致题意: 在\(N×N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案(国王能攻击到它周围的8个格子). 状压\(DP\) 一看到这道题我就想到了经典的八皇后问题,但 ...
- 倍增LCA
前言 在做树上问题时,我们经常会遇到 \(LCA\)(最近公共祖先)问题.曾经的我遇到这类问题只会\(O(n)\)暴力求解,学了倍增\(LCA\),就可以\(O(logn)\)解决了. 简介 倍增\( ...
- CDQ分治入门
前言 \(CDQ\)分治是一个神奇的算法. 它有着广泛的用途,甚至在某些题目中还能取代\(KD-Tree\).树套树等恶心的数据结构成为正解,而且常数还小得多. 不过它也有一定的缺点,如必须离线操作, ...
- 面试中常见的 MySQL 考察难点和热点
基本架构 MySQL是典型的三层架构模式,在平常使用中对MySQL问题排查和优化,也应该针对具体问题,从对应的层解决问题 服务层:经典的C/S架构,主要是处理连接和安全验证. 核心层:处理MySQL核 ...
- Object.prototype.toString的应用
使用Object.prototype上的原生toString()方法判断数据类型,使用方法如下: Object.prototype.toString.call(value)1.判断基本类型: Obje ...
- css img 等比例自动缩放
按父容器宽度自动缩放,并且保持图片原本的长宽比 img{ width: auto; height: auto; max-width: 100%; max-height: 100%; }
- 操作表单 -------JavaScrip
本文摘要:http://www.liaoxuefeng.com/ HTML表单的输入控件主要有以下几种: 文本框,对应的<input type="text">,用于输入 ...