对本博客的mybatis重新读一下,做一个整理。如下:

1:为什么会有mybatis,因为原生的jdbc方式有很大问题:

(1)数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。

设想:使用数据库连接池管理数据库连接。

(2)、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

(3)、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

(4)、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。

设想:将查询的结果集,自动映射成java对象。

2:mybatis开发流程:

(1)先建立下SqlSessionFactoryBuilder:通过SqlSessionFactoryBuilder创建会话工厂SqlSessionFactory

(2)通过SqlSessionFactory创建SqlSession,使用单例模式管理sqlSessionFactory(工厂一旦创建,使用一个实例)。将来mybatis和spring整合后,使用单例模式管理sqlSessionFactory。

(3)sqlSession的诞生过程是这样的:通过SqlSessionFactory创建一个SqlSession.

3:DAO开发分成两个方面:

(1)传统的DAO方式:

程序员需要写dao接口以及dao的实现类。

在DAO的实现类中有变量:SqlSessionFactory 。

这个SqlSessionFactory变量在测试方法中写入。

(2)Mapper的开发方式


我先给出mapper代理开发的思路(mapper代理开发的规范):

我们用mapper代理开发时要写2个:

1.mapper.xml

2.mapper接口

我们写的mapper接口只要需要遵循一些开发规则,mybatis可以自动生成mapper接口实现类代理对象。(这句话很重要)

我们重点讲一下开发规则:

开发规范:

1、在mapper.xml中namespace等于mapper接口地址

2、mapper.java接口中的方法名和mapper.xml中statement的id一致

mapper.xml中是这样的:

mapper.java接口应该是这样的:

名字要一模一样的。

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

4、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。


4:在写mapper.xml时,里面有映射。分为两种:resultType和resultMap:

resultType,pojo的名字和mapper.xml中配置的名字一模一样才能映射成功。

resultMap没有上面的要求,可以自己建立映射关系。

一对多怎么映射:用collection。

多对多怎么映射:用collection。

5:与spring的整合

(1)原始DAO开发的整合方式:

我们以前要用Mybatis是需要sqlMapConfig.xml(这个配置文件需要配置dataource,以及mapper.xml文件。)原始的sqlMapConfig.xml如下:



现在我们加入spring之后,database就要交给spring的配置文件applicationContext.xml来处理了。而且我们以前在用Dao时,传统的做法是要在Dao类中有SqlSessionFactory,现在用Spring之后,最主要的改变就是这里了。

需要spring通过单例方式管理SqlSessionFactory。

spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(spring和mybatis整合自动完成)

application.xml的配置文件如下:

(2)mapeer代理开发整合:


34对MyBatis的博客的整理心得的更多相关文章

  1. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  2. java秀发入门到优雅秃头路线导航【教学视频+博客+书籍整理】

    目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...

  3. java入门到秃路线导航,元芳你怎么看?【教学视频+博客+书籍整理】

    目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...

  4. 转载网易博客:整理各大网站让网站变灰的css代码

    2013-07-21 15:06:47 北京时间2013年4月20日8时02分四川省雅安市芦山县(北纬30.3,东经103.0)发生7.0级地震.震源深度13公里.各大网站将其网站变灰,本人整理了下部 ...

  5. 第一个MyBatis程序(博客初写者)

    第一个Mybatis程序 一.环境: 1.JDK1.8 2.MYSQL5.7 3.IDEA 4.MAVEN 3.63 二.Mybatis认识: 1.查看官方文档 https://mybatis.org ...

  6. [整理]Python程序员面试前需要看的博客(持续整理)

    基本素养 如何聪明的提问 面试方法 从面试官角度来告诉大家,哪些人能面试成功 如何在面试中介绍自己的项目经验 计算机系统 [面试] 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清 ...

  7. C++常用的函数,好的博客文章整理,集锦

    http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152404.html    c语言产生随机数的方法 http://blog.sina. ...

  8. 『编程题全队』Alpha 阶段冲刺博客Day7

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加了网络通信管理类 2.稍微修改了燃尽图模块ChartWidget 3.在主窗口中添加了用户信息框 4.重构了项目中的文件结 ...

  9. 『编程题全队』Alpha 阶段冲刺博客Day6

    1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加JSON处理模块 2.添加了团队看板中的添加团队任务功能 3.添加了团队看板中的添加按钮 孙慧君: 1.个人任务框UI的设 ...

随机推荐

  1. [JOI2017/2018]美術展

    [JOI2017/2018]美術展 题目大意: 有\(n(n\le5\times10^5)\)个物品,每个物品有两个属性:尺寸\(A_i\)和收益\(B_i\).从中选取一个子集,总收益为\(\sum ...

  2. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

  3. 05 树莓派安装飞鸽传书 Iptux

    2017-08-22 14:47:06 进入页面:https://packages.debian.org/search?keywords=iptux   选择“stretch (stable) ”—— ...

  4. Node回调&事件

    Node回调&事件 Node.js 异步编程的直接体现就是回调,异步编程依托于回调来实现 简介 回调函数在任务完成后会被调用,node的所有API都支持回调函数,回调函数提高了Node的性能, ...

  5. Accumulator<Long> implements of JavaSparkContext in Spark1.x

    As we all know , up to Spark 1.6.2, JavaSparkContext only provides two kinds of accumulators: Intege ...

  6. openstack之Neutron网络虚拟化

    第一:为什么需要网络虚拟化? 一.数据中心的现有网络不能满足云计算的物理需求: 互联网行业数据中心的基本特征就是服务器的规模偏大.进入云计算时代后,其业务特征变得更加复杂,包括:虚拟化支持.多业务承载 ...

  7. openstack 之~keystone部署

    第一:版本信息 官网http://docs.openstack.org/newton/install-guide-rdo/keystone.html 我们按照Newton这个版本来部署,opensta ...

  8. yuv rgb 互转 公式 及算法

    1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用的过程,所以在不同的应用领域中为了更好更准确的 ...

  9. 对Unity的Resources目录进行改名

    项目用的是Unity5.5版本,开发的时候将相关的图集.预制对象资源都放在 Resources 目录下,而真机使用的是 StreamingAssets 目录下的资源. Resources(不分层级)在 ...

  10. xhprof 运行结果名词解释

    Overall Summary Inclusive Time (或子树时间):包括子函数所有执行时间. Exclusive Time/Self Time:函数执行本身花费的时间,不包括子树执行时间. ...