34对MyBatis的博客的整理心得
对本博客的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的博客的整理心得的更多相关文章
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...
- java秀发入门到优雅秃头路线导航【教学视频+博客+书籍整理】
目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...
- java入门到秃路线导航,元芳你怎么看?【教学视频+博客+书籍整理】
目录 一.Java基础 二.关于JavaWeb基础 三.关于数据库 四.关于ssm框架 五.关于数据结构与算法 六.关于开发工具idea 七.关于项目管理工具Mawen.Git.SVN.Gradle. ...
- 转载网易博客:整理各大网站让网站变灰的css代码
2013-07-21 15:06:47 北京时间2013年4月20日8时02分四川省雅安市芦山县(北纬30.3,东经103.0)发生7.0级地震.震源深度13公里.各大网站将其网站变灰,本人整理了下部 ...
- 第一个MyBatis程序(博客初写者)
第一个Mybatis程序 一.环境: 1.JDK1.8 2.MYSQL5.7 3.IDEA 4.MAVEN 3.63 二.Mybatis认识: 1.查看官方文档 https://mybatis.org ...
- [整理]Python程序员面试前需要看的博客(持续整理)
基本素养 如何聪明的提问 面试方法 从面试官角度来告诉大家,哪些人能面试成功 如何在面试中介绍自己的项目经验 计算机系统 [面试] 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清 ...
- C++常用的函数,好的博客文章整理,集锦
http://www.cnblogs.com/xianghang123/archive/2011/08/24/2152404.html c语言产生随机数的方法 http://blog.sina. ...
- 『编程题全队』Alpha 阶段冲刺博客Day7
1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加了网络通信管理类 2.稍微修改了燃尽图模块ChartWidget 3.在主窗口中添加了用户信息框 4.重构了项目中的文件结 ...
- 『编程题全队』Alpha 阶段冲刺博客Day6
1.每日站立式会议 1.会议照片 2.昨天已完成的工作统计 孙志威: 1.添加JSON处理模块 2.添加了团队看板中的添加团队任务功能 3.添加了团队看板中的添加按钮 孙慧君: 1.个人任务框UI的设 ...
随机推荐
- HTML(一)
html基本结构 一个html的基本结构如下: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- egret.Shape渲染集合图形
代码: class Main extends egret.DisplayObjectContainer { public constructor() { super(); this.addEventL ...
- 深入理解JVM(7)——类加载器
一.类和类加载器 a) 类加载器的作用:将class文件加载到JVM的方法区,并且在方法区中创建一个java.lang.Class对象作为外界访问这个类的接口. b) 类和 ...
- Maven实战(七)——常用Maven插件介绍(上)
我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的.进一步说,每个任务对应了 ...
- Microsoft.AspNet.Identity: UserID用整型数据表示, 而不是GUID
第一篇: 这个好像不太好 http://stackoverflow.com/questions/19553424/how-to-change-type-of-id-in-microsoft-aspn ...
- c语言单片机中断服务程序
#include <reg52.h> #define uchar unsigned char #define uint unsigned int uint count; void dela ...
- Node_初步了解(3)回调,作用域,上下文
1. //回调:回调是异步编程最基本的方法,node.js需要按顺序执行异步逻辑的时候,一般采用后续传递的方式,将后续逻辑封装在回调函数中,作为起始函数的参数. //具名函数 function lea ...
- Vue相关开源项目库汇总(史上最全)
偶尔在网上看到的,先保存着,以备不时之需 https://www.jianshu.com/p/e37f4dde49a2 better-scroll:是一款重点解决移动端(未来可能会考虑 PC 端)各种 ...
- python asyncio
3. 真-官网文档 ----超级全 http://aiohttp.readthedocs.io/en/stable/client.html#make-a-request 2. 官网文档: htt ...
- Windows远程桌面(mstsc)不能复制粘贴的解决办法
原来通过mstsc远程连接Windows能够直接在本地和服务器之间复制.粘贴一些文字和文件,最近突然无法直接复制粘贴了,只能通过远程映射的本地磁盘方式交换文件,太为繁琐. 已经确认远程桌面连接选项“本 ...