【MyBatis是什么】

  MyBatis是一个持久层框架,Mybatis是一个不完全的ORM框架,SQL语句需要程序员自己去编写,但是MyBatis也有映射(输入参数映射、输出结果映射)。

  MyBatis让开发人员将经历放在sql语句上,对sql语句优化非常方便,适用于需求变化较多的项目,比如互联网的相关项目。

【MyBatis框架执行过程】

1.配置mybatis的配置文件,SqlMapConfig.xml(名称不固定)。

2.通过配置文件,加载myBatis运行环境,创建SqlSessionFactory会话工厂。SqlSessionFactory在实际使用时按单例方式。

3.通过SqlSessionFactory创建SqlSession。SqlSession是一个面向用户接口(提供数据库方法),实现对象是线程不安全的,建议SqlSession应用场合在方法体内。

4.调用sqlSession的方法去操作数据,如果需要提交事务,需要执行SqlSession的commit( )方法。

5.释放资源,关闭SqlSession。

【MyBatis开发Dao方法】

一.原始dao的方法(iBatis/MyBatis)

  需要程序员编写dao接口和实现类。

  需要dao实现类中注入一个SqlSessionFactory工厂。

二.mapper代理开发方法(MyBatis,建议使用)

  只需要程序员编写mapper接口。

  如程序员在编写userMapper.xml(映射文件)和userMapper.java需要遵循一个开发规范:

  1.userMapper.xml中的namespace就是userMapper.java的类的全路径。

  2.userMapper.xml中statement的id和userMapper.java中方法名一致。

  3.userMapper.xml中statement的parameterType指定输入参数的类型和userMapper.java的方法输入参数类型一致。

  4.userMapper.xml中statement的resultType指定输出结果的类型和userMapper.java的方法返回值类型一致。

【输入映射】

  parameterType:指定输入参数类型可以为简单类型、pojo、hashMap....

  对于综合查询,建议parameterType使用包装的pojo,有利于系统扩展。

【输出映射】

  resultType:查询到的列名和resultType指定的pojo的属性名一致。才能映射成功。

  resultMap:可以通过resultMap完成一些高级映射。

        如果查询到的列名和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系(映射关系)可以完成映射。

【高级查询】

  将关联查询的列映射到一个pojo属性中。(一对一)

  将关联查询的列映射到一个List<pojo>中。(一对多)

  

16_MyBatis中期小结的更多相关文章

  1. DataGrid3

    a标签,DataGrid的数据绑定 1.function aa(id, url) {            //alert(id);            window.open(url + '&am ...

  2. GDI+编程小结

    GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负 ...

  3. zz 跟风小结一下孕期~

    http://www.newsmth.net/nForum/#!article/FamilyLife/1754069968 发信人: milkcat (牛奶猫养了一只牛奶猫(*^__^*) 嘻嘻……) ...

  4. gc原理小结

    一.相关概念 基本回收算法 1. 引用计数(Reference Counting) 比较古老的回收算法.原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数.垃圾回收时,只用收集计数为0 ...

  5. 《从0到1》读书笔记第2章&quot;像1999 年那样狂欢&quot;第1记:小结及词汇解析

    小结 本章的目的应该是通过90年代末的互联网泡沫的背景,成因.影响,以及教训来教诫人们,在全部人都疯狂的抛身于洪流热潮之中时,我们要冷静的思考辨识出那些不切实际的大众观点,找到隐藏在这些观点后面的反主 ...

  6. 第11.27节 Python正则小结:正则静,静则明,明则虚,虚则无为而无不为也

    正则表达式的章节到此就结束了,老猿现在觉得对我们这些身具程序猿基因特色的人来说,正则表达式应该是蛮可口的开胃小菜. 在写标题时,本来想写"正则表达式小结",后来想了想,百度了一下, ...

  7. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  8. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  9. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

随机推荐

  1. 一些有用的Azure工具

    目前,Azure 没有为客户提供监控和管理托管服务的完整解决方案.为了获取网络信息,speedtest.net 提供了一种工具,用于测量响应时间.带宽和整体连接质量.可以使用 Matthew Roso ...

  2. Hbase集群无法关闭

    执行stop-hbase.sh关闭Hbase服务器,提示一直在等待,查阅了很多网上的资料找到了答案.因为hbase的主要信息存储在zookeeper集群中,zookeeper集群没有正常启动会导致hb ...

  3. HDOJ-ACM1018(JAVA)

    题意: 求n!的位数,0<n<10^7 思路:log10(1)+log10(2)+···+log10(n) = log10(n!)   [题目的考点就在这吧] 解题: import jav ...

  4. ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph

    ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1 ...

  5. CodeForces 540E - Gerald and Giant Chess(数论)

    给一个棋盘,需要从左上角走到右下角,有部分点不能走,求一共有多少种走法. 首先要知道从一个点A到另一个点B在没有障碍下有多少种走法.保证A在B的左上方,如图 一共需要走(X+Y)步(图中△x,△y), ...

  6. devexpress中gridview控件编辑时改变输入法状态

    在win7环境下使用Devexpress中的SpinEdit控件,切换成中文[简/繁]输入法输入数字键时有不少输入法会重复产生数字如输入1会变成11,输入123会变成112233.使用SpinEdit ...

  7. SRM659 1100pts

    绍一模拟赛的题[问题描述]小Z.小Y和小B拥有

  8. java中通过反射获取方法并且调用(getMethod和invoke深入)实践

    为了支持业务的快速变更,往往采用可配置的方式,将业务逻辑的处理部分配置在数据库中或者XMl文件里.配置什么,如何配置才更灵活,That's a problem. 以数据库配置为例(xml相同),在数据 ...

  9. 解析Systemtap

    SystemTap 的架构 让我们深入探索 SystemTap 的某些细节,理解它如何在运行的内核中提供动态探针.您还将看到 SystemTap 是如何工作的,从构建进程脚本到在运行的内核中激活脚本. ...

  10. 基于Linux系统的病毒

    虽然在Linux里传播的病毒不多,但也是存在一些,我从一些安全网站搜集了一些资料. 1.病毒名称: Linux.Slapper.Worm 类别: 蠕虫 病毒资料: 感染系统:Linux 不受影响系统: ...