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/- 微信阅读地 ...
随机推荐
- 零基础逆向工程27_Win32_01_宽字符_MessageBox_win32调试输出
1 多字节字符 ASCII码表:0 ~ 2^7-1 扩展ASCII码表:2^7 ~ 2^8-1 什么是GB2312:1980年,两个字节存储一个汉字:不通用,别国会有乱码. UCICODE:只有一个字 ...
- SVN Working copy '***' locked
问题描述: 用svn在项目文件夹下commit或者update时会出现错误提示“working copy locked” 解决方法: 1.在项目文件夹下,单击鼠标右键,选择tortoisesvn-&g ...
- System Center Configuration Manager 2016 域准备篇(Part2)
对于" 服务器角色",请选择" Active Directory域服务",当系统提示您添加Active Directory域服务所需的功能时,请选择" ...
- Ubuntu 14.04 安装caffe深度学习框架
简介:如何在ubuntu 14.04 下安装caffe深度学习框架. 注:安装caffe时一定要保持网络状态好,不然会遇到很多麻烦.例如下载不了,各种报错. 一.安装依赖包 $ sudo apt-ge ...
- Internationalization(i18n) support in SAP CRM,UI5 and Hybris
i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是"国际化"的简称.对程序来说,在不修改内部代码的情况下,能根据不同语言及 ...
- codeforce 599C Day at the Beach
Bi表示第i个块,那么就是说Bi max ≤ Bi+1 min,又因为Bi min ≤ Bi max, 因此只要判断前缀的最大值是否小于等于后缀. #include<bits/stdc++.h& ...
- iptables 防火墙详解
一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...
- 2018.6.13 Java语言基础复习总结
Java语言基础与面向对象编程实践 第一章 初识Java 1.1机器语言 机器语言是指一台计算机全部的指令集合.机器语言室友0和1组成的二进制数,是一串串由0和1组成的指令序列,可将这些指令序列交给计 ...
- React后台管理系统-商品列表搜索框listSearch组件
1.商品列表搜索框 2.搜索框页面的结构为 <div className="row search-wrap"> <div classN ...
- 微服务SpringCloud+Docker入门到高级实战(目录)
第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可以 ...