在上篇螃蟹已经说明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详解的更多相关文章

  1. Spring整合EhCache详解

    一.EhCache介绍 EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider.Ehcache是一种广泛使用的开 源Java分布 ...

  2. spring原理案例-基本项目搭建 02 spring jar包详解 spring jar包的用途

    Spring4 Jar包详解 SpringJava Spring AOP: Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects: Spring提供的对Aspec ...

  3. SpringBoot与PageHelper的整合示例详解

    SpringBoot与PageHelper的整合示例详解 1.PageHelper简介 PageHelper官网地址: https://pagehelper.github.io/ 摘要: com.gi ...

  4. Spring jar包详解

    Spring jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spri ...

  5. Spring——jar包详解(转)

    Spring——jar包详解 org.springframework.aop ——Spring的面向切面编程,提供AOP(面向切面编程)的实现 org.springframework.asm——spr ...

  6. (转)Spring事务管理详解

    背景:之前一直在学习数据库中的相关事务,而忽略了spring中的事务配置,在阿里面试时候基本是惨败,这里做一个总结. 可能是最漂亮的Spring事务管理详解 https://github.com/Sn ...

  7. 可能是最漂亮的Spring事务管理详解

    Java面试通关手册(Java学习指南):https://github.com/Snailclimb/Java_Guide 微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么 ...

  8. 可能是最漂亮的Spring事务管理详解 专题

    微信阅读地址链接:可能是最漂亮的Spring事务管理详解 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允 ...

  9. 最漂亮的Spring事务管理详解

    SnailClimb 2018年05月21日阅读 7245 可能是最漂亮的Spring事务管理详解 Java面试通关手册(Java学习指南):github.com/Snailclimb/- 微信阅读地 ...

随机推荐

  1. vue+element-ui实现cookie登录

    //效果 //login.vue <template> <div> <el-form :model="ruleForm" :rules="r ...

  2. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  3. Mac 颜色取值

    command+shift+4  截图,我靠,我以前不知道 系统自带数码测色计, 选择显示十六位制 command+L 锁定 command+shift+c 复制 简直太方便

  4. 卸载VS2013 2015

    我有两个VS,特别讨厌,每当使用window程序删除时候,就出现 停止工作! 然后从知乎上发现了这个 https://github.com/Microsoft/VisualStudioUninstal ...

  5. 梦织未来Windows驱动编程 第05课 小结(读取另一驱动,遍历所有驱动)

    读取另一驱动 驱动通过"\\Driver\\XueTr"获取到了XueTr工具的驱动,并Hook了XueTr驱动的分发函数. 具体的驱动代码如下: //FilterDriver.c ...

  6. android RadioGroup设置某一个被选中

    见码滚 mPriorityRadioGroup.clearCheck(); mStatusRadioGroup.clearCheck(); RadioButton r1 = (RadioButton) ...

  7. 【BZOJ4327】[JSOI2012] 玄武密码(AC自动机的小应用)

    点此看题面 大致题意: 给你一个长度为\(len\)的文本串和\(n\)个模式串,让你求出每一个模式串的前缀与文本串的最大匹配串长度(其中模式串和文本串都只由字符'E','S','W','N'组成). ...

  8. 【洛谷3759】[TJOI2017] 不勤劳的图书管理员(树套树)

    点此看题面 大致题意: 给定一个序列,每个元素有两个属性\(a_i\)和\(v_i\),每次操作改变两个元素的位置,求每次操作后\(\sum{v_i+v_j}[i<j,a_i>a_j]\) ...

  9. javaweb基础(34)_jdbc处理mysql大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  10. N-gram的原理、用途和研究

    N-gram的原理.用途和研究 N-gram的基本原理 转自:http://blog.sciencenet.cn/blog-713101-797384.html N-gram是计算机语言学和概率论范畴 ...